Collection接口之List接口

摘要:

在java中集合主要分为两类,collection和map两个大的接口,collection又分为list和set接口,这里记录list接口中常用的方法。

list的特点:

list存储的数据是有序的,可重复的。

list的主要实现类:

  • ArrayList(可以看作是一个动态的数组,底层会自动扩容,线程不安全,查询效率高,插入效率低)

  • LinkedList(底层是双向链表,查询效率低,插入效率高)

  • vector(线程安全,基本不使用)

list中常用的方法(按功能分,可以从增、删、改、查,插,长度,遍历几个方面描述)

  • 增:
    void add(Object obj) // 在末尾增加一个obj元素
    boolean addAll(int index, Collection ele) // 在指定的位置处添加所有的集合元素到集合中

  • 删:
    remove(int index) 或者 remove(Object obj),分别表示移除指定索引的元素和移除指定值的元素,前者是List接口独有的,后者是Collection共有的。

  • 改:
    Object set(int index,Object ele) // 设置指定index位置的元素为ele

  • 查:
    Object get(int index) // 获取指定index位置的元素

  • 插:
    void add(int index, Object ele) // 在指定位置上增加ele元素

  • 长度
    int size()

  • 第一次出现元素的索引和最后一次出现的索引
    indexOf(Object obj) 和lastIndexOf(Object obj)

  • 遍历:有三种

    • 迭代器Iterator
    • 增强for
    • 普通for或者while

demo示例

public class ArrayList{
  @Test
  public void test1(){
  
    ArrayList list = new ArrayList();
    /*在末尾添加*/
    list.add(123); // 添加元素
    list.add("abc");
    list.add(123) ;// 体现了list的可重复性
    list.add(new Date();
    /*在指定位置插入*/
    list.add(1, "BB"); // 在第二个位置上添加BB元素
    /*将一个集合的所有元素添加到一个集合中*/
    List list2 = Arrays.asList(1,2,3); // 通过数组工具类创建一个新的List
    list.addAll(list2); // 此时的集合中会多出三个元素1,2,3
    /*将一个集合作为一个整体添加到一个集合中*/
    List list3 = Arrays.asList("a","b","c"); 
    list.add(list3) // 将集合list3作为一个整体添加到list集合中

    /*返回123首次出现的索引*/
    int index = list.indexOf(123);
    /*返回123最后一次出现的位置*/
    index lastIndex = list.lastIndexOf(123);
    /*从集合中删除元素*/
    Object o = list.remove(0) // 删除第一个位置的元素, 这里删除是指按照索引删除,其实add元素的时候比如123,其实添加的是包装类的对象,会自动装箱,因此要移除指定值的元素,我们需要手动装箱,如list.remove(new Integer(123));就会移除指定值的123
    /**改*/
    list.set(1, "cc"); // 将位置为2的元素修改为CC
    /*使用Iterator遍历*/
    Iterator iterator = list.iterator();
    while(iterator.hasNext()){
      System.out.println(iterator.next());
    }

    /*使用增强for*/
    for(Object ob: List){
      System.out.println(ob);
    } 
    /*普通for*/
    for(int i = 0; i < list.size(); i++){
        System.out.println(list.get(i));
    }
  }

}

你可能感兴趣的:(Collection接口之List接口)