今天接着介绍 List 类中专属的方法,包含在 Collection 类中的相同方法将不再做介绍(可参考Collection 类的实用方法 )。
1.往指定位置插入元素
List 中的 add(index,T) 和 addAll(index,Collection<? extend T>)可以朝指定位置插入元素。
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
System.out.println(list);
list.add(0, "X");
System.out.println(list);
String[] strings = {
"Y", "Z"};
ArrayList<String> arrayList = new ArrayList<>(Arrays.asList(strings));
list.addAll(1, arrayList);
System.out.println(list);
}
[A, B, C]
[X, A, B, C]
[X, Y, Z, A, B, C]
2.返回指定元素位置
indexOf(Object) 返回元素在容器中的位置,若元素不存在于容器中,则返回 -1。
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
System.out.println(list);
System.out.println(list.indexOf("B"));
System.out.println(list.indexOf("X"));
}
[A, B, C]
1
-1
3.移除指定位置元素
remove(index) 用作移除容器内指定位置的元素。
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
System.out.println(list);
list.remove(1);
System.out.println(list);
}
[A, B, C]
[A, C]
4.改变指定位置的值
set(index,T) 用于改变容器内指定位置的值。
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
System.out.println(list);
list.set(1,"X");
System.out.println(list);
}
[A, B, C]
[A, X, C]
5.增强版迭代器 ListIterator
listIterator(index) 同样返回一个迭代器,它的功能比 Collection 中的 Iterator 更加丰富。可以指定参数 index,从固定位置开始遍历,若不指定参数,则默认从 位置 0 开始遍历。
5.1 正序遍历
hasNext() 判断下一个位置是否存在元素,next() 返回下一个元素,这和 Iterator 中的用法相同。但 ListIterator 额外提供 nextIndex() 方法可用于返回下一个元素的下标。
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
list.add("X");
list.add("Y");
list.add("Z");
ListIterator<String> iterator = list.listIterator();
while (iterator.hasNext()) {
System.out.print(iterator.next()+"\t");
System.out.println("下一个元素索引为:"+iterator.nextIndex());
}
System.out.println();
iterator = list.listIterator(3);
while (iterator.hasNext()) {
System.out.print(iterator.next()+"\t");
System.out.println("下一个元素索引为:"+iterator.nextIndex());
}
}
A 下一个元素索引为:1
B 下一个元素索引为:2
C 下一个元素索引为:3
X 下一个元素索引为:4
Y 下一个元素索引为:5
Z 下一个元素索引为:6
X 下一个元素索引为:4
Y 下一个元素索引为:5
Z 下一个元素索引为:6
5.2 倒序遍历
因此处需使用倒序遍历,故我们得指定遍历起始位置,否则默认从 0 开始遍历,对倒序是没有意义的。
hasPrevious() 判断是否存在前一个元素,previous() 返回前一个元素,previousIndex() 返回前一个元素的下标(不存在前一个元素时返回 -1)。
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
list.add("X");
list.add("Y");
list.add("Z");
ListIterator<String> iterator = list.listIterator(list.size());
while (iterator.hasPrevious()) {
System.out.print(iterator.previous()+"\t");
System.out.println("下一个元素索引为:"+iterator.previousIndex());
}
}
Z 下一个元素索引为:4
Y 下一个元素索引为:3
X 下一个元素索引为:2
C 下一个元素索引为:1
B 下一个元素索引为:0
A 下一个元素索引为:-1
6. LinkedList 专用方法
这里额外补充一批仅适用于 LinkedList 的方法。
addFirst(T) 往头部添加元素;
addLast(T) 往尾部添加元素;
removeFirst() 移除头部元素;
removeLast() 移除尾部元素。
具体示例如下所示:
public static void main(String[] args) {
LinkedList<String> list = new LinkedList<>();
list.add("A");
list.add("B");
list.add("C");
System.out.println(list);
list.addFirst("X");
System.out.println(list);
list.addLast("Z");
System.out.println(list);
list.removeFirst();
System.out.println(list);
list.removeLast();
System.out.println(list);
}
[A, B, C]
[X, A, B, C]
[X, A, B, C, Z]
[A, B, C, Z]
[A, B, C]
本次分享至此结束,希望本文对你有所帮助,若能点亮下方的点赞按钮,在下感激不尽,谢谢您的【精神支持】。
若有任何疑问,也欢迎与我交流,若存在不足之处,也欢迎各位指正!