Java集合List基本使用详解
程序员文章站
2022-05-20 10:53:50
...
Java集合List基本使用详解
List实现类
-
ArraryList:
- 数组结构实现,查询快、增删慢;
- JDK1.2版本,运行效率块、线程不安全
-
Vector:
- 数组结构实现,查询快、增删慢;
- JDK1.0版本,运行效率慢、线程安全
-
LinkedList:
- 链表结构实现,增删快,查询慢
List接口的特点
之前在我的有关于collection文章中有写到关于List和Set的图片,上面简单的列举了其各自的接口的特点(如果没看的同学可以点击这里进行查看)
特点:有序、有下标、元素可重复
因为List元素都是有下标的,所以相较于collection集合里的元素就会有更多的操作空间,也即多了很多方法来通过下标对元素进行添加、查找、修改、删除、遍历等基本操作(具体有哪些玩法大家可以通过JDK1.8API介绍)。其中关于遍历的玩法更是多样,不仅可以进行正向遍历,还可以进行逆向遍历。其中提供的列表迭代器(listIterator)相较于普通的迭代器(Iterator)玩法也是更加灵活。
老规矩,具体的基本玩法还是以代码的 形式展开,其中有关于其注意事项用注释写了出来,因为其中的注意点和collection集合的用法有重复的地方,在这里就不再重复描述,所以强烈建议在学习List接口之前先看看我的上一篇有关collection接口的文章。
测试案例
/**
* List接口使用
* 测试数据类型:String
*
* @author :twb
* @// TODO: 2021/3/22
* @version jdk1.8
*/
public class Demo1 {
public static void main(String[] args) {
List list = new ArrayList<>();
//添加元素:直接添加和通过下标添加
//如果添加的是基本数据类型则会进行自动装箱,将基本数据类型转化为对应的包装类(eg:int-->Integer)
list.add("小米");
list.add("苹果");
list.add(0,"华为");
list.add(1,"oppo");
System.out.println("集合中的元素个数为:"+list.size());
System.out.println("打印集合中的元素:"+list.toString());
System.out.println("-----------------------------------");
//删除元素
list.remove("华为");//直接删除元素
// list.remove(0); //通过下标删除元素
System.out.println("集合中的元素个数为:"+list.size());
System.out.println("打印集合中的元素:"+list.toString());
System.out.println("-----------------------------------");
//清除
// list.clear();
// System.out.println("集合中的元素个数为:"+list.size());
//遍历:1、for循环遍历 2、增强for循环遍历 3、迭代器遍历 4、list迭代器遍历
//1、for循环遍历
for (int i = 0; i < list.toArray().length; i++) {
System.out.println("for循环遍历:"+" ["+i+"] "+list.get(i).toString());
}
System.out.println("-----------------------------------");
//2、增强for循环遍历
for (Object o : list) {
System.out.println("增强for循环遍历:"+o.toString());
}
System.out.println("-----------------------------------");
//3、迭代器遍历
Iterator iterator = list.iterator();
while(iterator.hasNext()){
System.out.println("迭代器遍历:"+iterator.next().toString());
}
System.out.println("-----------------------------------");
//4、list迭代器遍历
//list迭代器正向遍历
ListIterator listIterator = list.listIterator();
while (listIterator.hasNext()){
System.out.println("list迭代器正向遍历:"+listIterator.next());
}
System.out.println("-----------------------------------");
//list迭代器逆向遍历
while(listIterator.hasPrevious()){
System.out.println("list迭代器逆向遍历:"+listIterator.previous());
}
System.out.println("-----------------------------------");
//判空
System.out.println(list.isEmpty());//false
//判元素是否存在
System.out.println(list.contains("华为"));//false
System.out.println(list.contains("小米"));//true
System.out.println("-----------------------------------");
//获取位置(索引)
System.out.println("苹果手机的索引为:"+list.indexOf("苹果"));
}
}
测试结果
集合中的元素个数为:4
打印集合中的元素:[华为, oppo, 小米, 苹果]
-----------------------------------
集合中的元素个数为:3
打印集合中的元素:[oppo, 小米, 苹果]
-----------------------------------
for循环遍历: [0] oppo
for循环遍历: [1] 小米
for循环遍历: [2] 苹果
-----------------------------------
增强for循环遍历:oppo
增强for循环遍历:小米
增强for循环遍历:苹果
-----------------------------------
迭代器遍历:oppo
迭代器遍历:小米
迭代器遍历:苹果
-----------------------------------
list迭代器正向遍历:oppo
list迭代器正向遍历:小米
list迭代器正向遍历:苹果
-----------------------------------
list迭代器逆向遍历:苹果
list迭代器逆向遍历:小米
list迭代器逆向遍历:oppo
-----------------------------------
false
false
true
-----------------------------------
苹果手机的索引为:2
这里我只是通过String类型进行测试,大家也可以参照我的代码去测试一下其他数据类型,例如一些基本数据类型或者是自己写的类(经典Student类)。