ArrayList

Posted hapyygril

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ArrayList相关的知识,希望对你有一定的参考价值。

容器
(1)Colletion函数库是java.util包下的接口和类
--类:产生对象,存放数据
--接口:访问数据
(2)Collection函数库与数组的区别
--数组的容量是有限的,collection没有限制
--collection函数库只能存放对象,数组没有限制
(3)Collection接口
--Set子接口:数组对象没有顺序,不可以重复
--List子接口:数组对象有顺序,可以重复
(4)Map接口
--存储“键(Key)-值(Value)映射对”
(5)ArrayList和LinkedList
--ArrayList:线程不安全,效率高。数组,查方便
--LinkedList:链表,增删改方便
--Vector:线程安全的

package TestList;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;



public class TestArrayList {
    public static void main(String[] args) {
        List list=new ArrayList();  //数组
        //List list=new LinkedList(); //链表
        
        list.add("abc");
        list.add("abc");
        list.add(new Date());
        list.add(new Person());
        list.add(135);
        
        System.out.println("listSize: "+list.size());//5
        
         /*remove 只删除第一个
         * 不同的对象 hashcode和equals(值)
         */
        
        /*
        "abc" 与 new String("abc")值相同
        list.remove("abc");    
        System.out.println("listSize: "+list.size());//4
        
        
        
        list.remove(new String("abc"));
        System.out.println("listSize: "+list.size());//4
        
        */
        
        
        
        /*
         //new Date()值不同
        list.remove(new Date());//3 
        System.out.println("listSize: "+list.size());//5
        */
        
        
        
        
        System.out.println(list.isEmpty());
        
        List list2=new ArrayList();
        list2.add("bcd");
        list2.add("ghu");
        
        
        
        //add(Collection)作为整体向原有的list中添加,size+1
        list.add(list2);
        System.out.println("listSize: "+list.size());
        
        //addAll(Collection) 按照位置逐条向原有的list中添加对象元素,size+2
        list.addAll(list2);
        System.out.println("listSize: "+list.size());//
        
        
        
        //get 
        String str=(String)list.get(0);
        System.out.println("get: "+str);//abc
        
        //set
        list.set(0, "hello");
        System.out.println(list.get(0));
        
        
        
    }
}

class Person{
    String name;
    
    public void Person(String name) {
        this.name=name;
    }
}
package TestList;

public class MyArrayList {
    
    public Object[] elementData;
    public int size;
    
    public int size() {
        return size;
    }
    

    
    //构造方法
    public MyArrayList() {
        this(10);
    }
    
    
    //构造方法
    public MyArrayList(int initialCapacity) {
        if(initialCapacity<0) {
           try {
               throw new Exception();
            
        }  catch(Exception e){
               e.printStackTrace();
        }
         }
        
         this.elementData=new Object[initialCapacity];
      }
    
    private void checkRange(int index) {
        if(index<0||index>=size) {
            try{
                throw new Exception();
            }catch(Exception e) {
                e.printStackTrace();
            }
            
        }
    }
    
    
    //add方法
    public void add(Object obj) {
        //数组扩容
        if(size==elementData.length) {
            Object[] newArray=new Object[size*2+1];
            System.arraycopy(elementData, 0, newArray, 0, elementData.length);
            elementData=newArray;
            
        }
        elementData[size++]=obj;
        
        
    }
    
    //isEmpty
    public boolean isEmpty(Object obj) {
        return size==0;
    }
    
    //get
    public Object get(int index) {
        checkRange(index);
        
        return elementData[index];
    }
    
    //remove(index)
    // a b c d e f g size=7 index=2 numMoved=4
    // 0 1 2 3 4 5 6
    public void remove(int index) {
        checkRange(index);
        int numMoved=size-index-1;
        if(numMoved>0) {
            System.arraycopy(elementData, index+1, elementData, index, numMoved);
            
        }
        elementData[--size]=null;
        
    }
    
    //remove(object)
    public void remove(Object obj) {
        
        for(int i=0;i<size;i++) {
            if(elementData[i].equals(obj)) {           
                remove(i);
            }
            
        }
        
    }
    
    //set
    // a b c d e  size=5 index=2 
    // 0 1 2 3 4   "s"
    public Object set(int index,Object obj ) {
        checkRange(index);
        Object oldValue=elementData[index];
        elementData[index]=obj;
        return elementData;      
        
    }
    
    //add
    public void add(int index,Object obj) {
        checkRange(index);
        System.arraycopy(elementData, index, elementData, index+1, size-index);
        elementData[index]=obj;
        size++;
        
        
    }
    
    
    
    
    
    
    
    
    
    
    
    
    
    public static void main(String[] args) {
        MyArrayList list=new MyArrayList(3);
        list.add("aaakkk");
        list.add("bbbkkk");
        list.add("ccckkk");
        list.add("dddkkk");
        System.out.println(list.size());
        System.out.println(list.get(1));
        //list.remove(1);
        //list.remove("bbbkkk");        
        list.set(1, "wwwwww");
        System.out.println(list.get(1));
        list.add(1,"mmmmm");
        System.out.println(list.get(1));
    }

}

 

以上是关于ArrayList的主要内容,如果未能解决你的问题,请参考以下文章

获取 Intent 片段上的 Serializable ArrayList

包含不同片段的HashMap(或ArrayList)

面试常用的代码片段

回收站视图未显示在片段中

从ViewPager android替换片段

无法更新FragmentPagerAdapter中的片段