List接口
public interface List<E> extends Collection<E> {}
有序的集合,Collection的子接口。
-
可以对元素插入的位置精确控制,也可以通过索引访问列表中的元素。
-
与Set不同,列表允许重复的元素。
boolean addAll(int index, Collection<? extends E> c); //在指定位置将集合c中的所有元素添加到列表中,如果这个调用改变了列表,返回true
E get(int index); //返回列表指定位置的元素
E set(int index, E element); //替换列表中指定位置的元素,并返回替换之前的元素
void add(int index, E element); //在列表指定为值插入元素
E remove(int index); //移除列表指定位置的元素,并返回这个元素
int indexOf(Object o); //返回列表中o出现的第一个位置,如果列表中没有,则返回 -1
int lastIndexOf(Object); //返回列表中o出现的最后一个位置,如果列表中没有,则返回 -1
ListIterator<E> listIterator(); //返回一个遍历列表中元素的List迭代器(遍历顺序和列表元素的顺序一致)
ListIterator<E> listIterator(int index); //返回一个从指定为开始遍历列表中元素的List迭代器
List<E> subList(int fromIndex, int toIndex); //截取列表并返回(左闭右开);如果fromIndex == toIndex,返回空列表
// 根据operator 替换列表中的所有元素
default void replaceAll(UnaryOperator<E> operator) {
Objects.requireNonNull(operator);
final ListIterator<E> li = this.listIterator();
while (li.hasNext()) {
li.set(operator.apply(li.next()));
}
}
replaceAll方法简单应用:
// 对列表中的每个元素 + 1
numList.replaceAll(t -> t + 1);
// 根据c 将列表中的元素排序
default void sort(Comparator<? super E> c) {
Object[] a = this.toArray();
Arrays.sort(a, (Comparator) c);
ListIterator<E> i = this.listIterator();
for (Object e : a) {
i.next();
i.set((E) e);
}
}
sort方法简单应用:
List<User> list = new ArrayList<User> ();
list.add(new User("zhangsan", 25));
list.add(new User("lisi", 20));
list.add(new User("wangwu", 23));
list.sort((user1, user2) -> user1.getAge() - user2.getAge());
list.forEach(user -> System.out.println(user.toString()));
//控制台输出:
// User [name=lisi, age=20]
// User [name=wangwu, age=23]
// User [name=zhangsan, age=25]