list也是我们平时开发时经常使用的一种集合。
下面的例子主要是list的一些常用方法,特别是遍历的各种方法。
package knowledge;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
public class ListDemo {
public static void main(String[] args) {
// 例1:list的各种方法使用例子
System.out.println("======例1=======");
List list = new ArrayList();
// 对list内容进行排序
list.add("20190101,20190501");
list.add("20190601,20190701");
list.add("20190301,20190701");
System.out.println("排序前:" + list);
// リスト内容をソートする(昇順)
list.sort(null);
System.out.println("排序后:" + list);
System.out.println("第二个元素后的值:" + list.get(1).toString());
System.out.println("第二个元素后的值:" + list.get(1).toString().substring(0, 8));
// 对list内的值进行遍历
for (int i = 0; i + 1 < list.size(); i++) {
System.out.println("list的长度:" + list.get(i).toString().length());
String num1 = list.get(i).toString().substring(9, 17);
String num2 = list.get(i + 1).toString().substring(0, 8);
System.out.println("num1:" + num1);
System.out.println("num2:" + num2);
// 前一组的第二个值与当前组的第一个值进行比较
if (num1.compareTo(num2) >= 0) {
System.out.println("需要修正的一组数据是:" + num1 + "," + num2);
}
}
// 对list内的值进行遍历
List<String> list1 = new ArrayList<>();
list1.add("北京");
list1.add("上海");
list1.add("天津");
list1.add("广州");
list1.add("重庆");
// 用迭代器方法
System.out.println("======1:用迭代器方法=======");
Iterator it = list1.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
// 用list迭代器方法
System.out.println("======2:用list迭代器方法=======");
Iterator it2 = list1.listIterator();
while (it2.hasNext()) {
System.out.println(it2.next());
}
// 使用listIterator迭代器可以向前遍历,同时可以修改其中的元素
System.out.println("======3:用list迭代器方法向前遍历=======");
// 建立迭代器时,需要指定起始位置
ListIterator<String> it3 = list1.listIterator(list1.size());
while (it3.hasPrevious()) {
System.out.println(it3.previous());
}
ListIterator<String> it4 = list1.listIterator(list1.size());
// 将天津前的城市改为杭州
while (it4.hasPrevious()) {
if ("天津".equals(it4.previous())) {
System.out.println(it4.previousIndex());
int postion = it4.previousIndex();
list1.set(postion, "杭州");
}
}
System.out.println(list1);
// 用foreach方法
System.out.println("======4:用foreach方法=======");
for (String str : list1) {
System.out.println(str);
}
// 删除一个元素
System.out.println("======删除一个元素=======");
list1.remove(2);
System.out.println("删除第三个元素后:" + list1);
// 增加一个元素
System.out.println("======增加一个元素=======");
list1.add(3, "香港");
;
System.out.println("元素添加后:" + list1);
}
}
下面是执行结果
======例1=======
排序前:[20190101,20190501, 20190601,20190701, 20190301,20190701]
排序后:[20190101,20190501, 20190301,20190701, 20190601,20190701]
第二个元素后的值:20190301,20190701
第二个元素后的值:20190301
list的长度:17
num1:20190501
num2:20190301
需要修正的一组数据是:20190501,20190301
list的长度:17
num1:20190701
num2:20190601
需要修正的一组数据是:20190701,20190601
======1:用迭代器方法=======
北京
上海
天津
广州
重庆
======2:用list迭代器方法=======
北京
上海
天津
广州
重庆
======3:用list迭代器方法向前遍历=======
重庆
广州
天津
上海
北京
1
[北京, 杭州, 天津, 广州, 重庆]
======4:用foreach方法=======
北京
杭州
天津
广州
重庆
======删除一个元素=======
删除第三个元素后:[北京, 杭州, 广州, 重庆]
======增加一个元素=======
元素添加后:[北京, 杭州, 广州, 香港, 重庆]
使用list时通常是以ArrayList形式出现的。ArrayList是将元素分配到数组中的,如果只是单纯的查找,则可以正常使用。但如果对Arraylist内的元素进行删除修改添加的话,ArrayList的效率就会非常慢,此时可以使用LinkedList。
LinkedList是以链接的形式存放元素的,所以需要对其中元素进行修改时,只需要对其中的链接做出更改就可以,能够极大的提高效率。