List接口

List接口是Collection的子接口

  • 特点:有序、有下标、元素可以重复。

1. 常用方法

  • void add(int index,Object o)在index位置插入对象o。
  • boolean addAll(index,Collection c) 将一个集合中的元素添加到此集合中的index位置。
  • Object get(int index) 返回集合中指定位置的元素。
  • List subList(int fromIndex,int toIndex)返回fromIndex和toIndex之间的集合元素。
Modifier and Type Method and Description
ListIterator<E> listIterator()返回列表中的列表迭代器(按适当的顺序)。
ListIterator<E> listIterator(int index)从列表中的指定位置开始,返回列表中的元素(按正确顺序)的列表迭代器。
void add(int index, E element)将指定的元素插入此列表中的指定位置(可选操作)。
E get(int index)返回此列表中指定位置的元素。
int indexOf(Object o)返回此列表中指定元素的第一次出现的索引,如果此列表不包含元素,则返回-1。
int lastIndexOf(Object o)返回此列表中指定元素的最后一次出现的索引,如果此列表不包含元素,则返回-1。
E remove(int index)删除该列表中指定位置的元素(可选操作)。
E set(int index, E element)用指定的元素(可选操作)替换此列表中指定位置的元素。
default void sort(Comparator<? super E> c)使用随附的 Comparator排序此列表来比较元素。
List<E> subList(int fromIndex, int toIndex)返回此列表中指定的 fromIndex (含)和 toIndex之间的视图。

2. 使用

List<String> list = new ArrayList<>();

// 1.添加元素
list.add("华为");
list.add("苹果");
list.add(0, "小米");//插入操作
System.out.println("元素个数:" + list.size());
System.out.println(list.toString());

// 2.删除元素
list.remove(0);
//list.remove("小米");    // 结果同上
System.out.println("删除之后:" + list.size());
System.out.println(list.toString());

// 3 .遍历元素
// 3.1 使用for遍历
for (int i = 0; i < list.size(); ++i) {
  System.out.println(list.get(i));
}

// 3.2 使用增强for
for (String str : list) {
  System.out.println(str);
}

// 3.3 使用迭代器
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
  System.out.println(iterator.next());
}
// 3.4使用列表迭代器,listIterator可以双向遍历,添加、删除及修改元素。
ListIterator listIterator = list.listIterator();
// 从前往后
while (listIterator.hasNext()) {
  System.out.println(listIterator.next());
}
// 从后往前(此时“遍历指针”已经指向末尾)
while (listIterator.hasPrevious()) {
  System.out.println(listIterator.previous());
}

//4.判断
System.out.println(list.isEmpty());
System.out.println(list.contains("苹果"));
//5.获取位置
System.out.println(list.indexOf("华为"));
List<Integer> list = new ArrayList<>();
// 1.添加数字数据(自动装箱)
list.add(20);
list.add(30);
list.add(40);
list.add(50);
System.out.println("元素个数:" + list.size());    // 元素个数:4
System.out.println(list.toString());    // [20, 30, 40, 50]

// 2.删除元素
list.remove(0);
//list.remove(20);很明显数组越界错误,改成如下
//list.remove(Object(20));
//list.remove(new Integer(20));
System.out.println("元素个数:" + list.size());    // 元素个数:3
System.out.println(list.toString());    // [30, 40, 50]

// subList,返回子集合,含头不含尾
List list2 = list.subList(1, 3);
System.out.println(list2.toString());   // [40, 50]

3. 实现类

  • ArrayList
    • 数组结构实现,查询块、增删慢。
    • JDK1.2版本加入,运行效率快、线程不安全。
  • Vector
    • 数组结构实现,查询块、增删慢。
    • JDK1.0版本加入,运行效率慢、线程安全。
  • LinkedList
    • 链表结构实现,增删快,查询慢。
Copyright © rootwhois.cn 2021-2022 all right reserved,powered by GitbookFile Modify: 2023-03-05 10:55:52

results matching ""

    No results matching ""