Java 集合类——Collections(1)

废话很少说,先上关系图java


集合类接口

List接口

List是列表类型,以线性方式存储对象。数组

List接口的三个典型实现:安全

  • List list = new ArrayList();  //底层数据结构是数组,查询快,增删慢;线程不安全,效率高
  • List list = new LinkedList();  //底层数据结构是链表,查询慢,增删快;线程不安全,效率高
  • List list = new Vector();  //底层数据结构是数组,查询快,增删慢;线程安全,效率低,几乎已淘汰这个集合
  • Stack stack = new Stack();  //Stack是Vector提供的一个子类,用于模拟“栈”这种数据结构(LIFO后进先出)

List接口经常使用方法:bash

  • add(int index, Object obj):指定索引位置添加元素,后面对象的索引位置相对日后移。
  • set(int index, E element):用指定元素替换列表指定位置的元素,返回之前在指定位置的元素。
  • indexOf(Object obj):返回对象在列表中第一次出现的索引位置,若是集合不包含该元素则返回-1.
  • lastIndexOf(Object obj):返回对象在列表中最后一次出现的索引位置,若是集合不包含该元素则返回-1.
  • listIterator():用来得到一个包含全部对象的ListIterator迭代器。

ArrayList

public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, 
           Cloneable, java.io.Serializable {
    //版本号
    private static final long serialVersionUID = 8683452581122892189L;

    //默认容量
    private static final int DEFAULT_CAPACITY = 10;

    //空对象数组
    private static final Object[] EMPTY_ELEMENTDATA = {};

    //默认空对象数组
    private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {};

    //元素数组,用于存放实际元素,并标记为transient,意味着序列化的时候,此字段不会被序列化。
    transient Object[] elementData; 

    //实际元素大小,默认为0
    private int size;

    //最大数组容量
    private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8;
}复制代码

构造函数数据结构

// 默认构造函数
ArrayList()

// capacity是ArrayList的默认容量大小。当因为增长数据致使容量不足时,容量会添加上一次容量大小的一半。
ArrayList(int capacity)

// 建立一个包含collection的ArrayList
ArrayList(Collection<? extends E> collection)复制代码

关键函数用法示例dom

public void test() {
   List<String> list = new ArrayList<>();
   list.add("a");  //增长元素
   list.add(1, "bb");  //指定索引位置增长元素
   System.out.println(list.get(0));  //获取指定索引值的元素
   System.out.println(list.size());  //获取长度
   list.set(1, "ccc");  //修改该索引值
   list.remove(1);  //移除指定索引值的元素
   list.remove("a");  //移除指定元素
   List<String> list1 = new ArrayList<>();
   list1.add("zzz");
   list1.add("xxx");
   list.addAll(list1);  //增长该collections的全部元素
   for (String aList : list) {
      System.out.println(aList);
   }
   list.removeAll(list1);  //移除该collections的全部元素
}复制代码
相关文章
相关标签/搜索