2、Java集合框架之List
(1)List集合的特点:
- 有序、有下标
- 元素可以重复
(2)List子接口的使用案例一
- 添加元素
//创建集合对象
List list=new ArrayList ();
//1、添加元素
list.add ("苹果");
list.add ("华为");
list.add (0,"小米");
System.out.println (list.size ());
System.out.println (list.toString ());
从结果上我们可以验证list集合的有下标以及有序性
- 删除测试
System.out.println ("--------删除测试--------");
//2、删除元素
// list.remove ("苹果");
list.remove (1);
System.out.println (list.size ());
System.out.println (list.toString ());
- 遍历操作
由于list是collection的子接口因此list也支持增强for以及迭代器iterator来遍历集合;除此之外,因为list有下标因此支持for操作
- 使用for操作
System.out.println ("--------使用for遍历--------");
for(int i=0;i<list.size ();i++){
System.out.println (list.get (i));
}
- 使用增强for操作
System.out.println ("--------使用增强for遍历--------");
for(Object o:list){
String s=(String)o;
System.out.println (o.toString ());
}
- 使用迭代器遍历
System.out.println ("--------使用迭代器遍历--------");
Iterator iterator=list.iterator ();
while (iterator.hasNext ()){
String s= (String) iterator.next ();
System.out.println (s.toString ());
}
- 使用列表迭代器从前往后
System.out.println ("--------使用列表迭代器从前往后--------");
ListIterator listIterator=list.listIterator ();
while (listIterator.hasNext ()){
System.out.println (listIterator.nextIndex ()+":"+listIterator.next ());
}
- 使用列表迭代器从后往前(逆向遍历即判断时候有前一个元素倒过去遍历)
System.out.println ("--------使用列表迭代器从后往前--------");
while (listIterator.hasPrevious ()){
System.out.println (listIterator.previousIndex ()+":"+listIterator.previous ());
}
- 判断
//判断
System.out.println (list.contains ("小米"));
System.out.println (list.isEmpty ());
- 获取位置
//获取位置
System.out.println (list.indexOf ("华为"));
(3)所有运行测试的结果
(5)代码汇总
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
/**
* List子接口的使用
* 特点:1、有序、有下标 2、可以重复
* @author LYM
* @date 2021/3/10 13:28
*/
public class Demo3 {
public static void main(String[] args) {
//创建集合对象
List list=new ArrayList ();
//1、添加元素
list.add ("苹果");
list.add ("华为");
list.add (0,"小米");
System.out.println (list.size ());
System.out.println (list.toString ());
System.out.println ("--------删除测试--------");
//2、删除元素
// list.remove ("苹果");
// list.remove (1);
// System.out.println (list.size ());
// System.out.println (list.toString ());
//遍历操作
/**
* 由于list是collection的子接口因此list也支持增强for以及迭代器iterator
* 除此之外,因为list有下标因此支持for操作
*/
System.out.println ("--------使用for遍历--------");
for(int i=0;i<list.size ();i++){
System.out.println (list.get (i));
}
System.out.println ("--------使用增强for遍历--------");
for(Object o:list){
String s=(String)o;
System.out.println (o.toString ());
}
System.out.println ("--------使用迭代器遍历--------");
Iterator iterator=list.iterator ();
while (iterator.hasNext ()){
String s= (String) iterator.next ();
System.out.println (s.toString ());
}
System.out.println ("--------使用列表迭代器从前往后--------");
ListIterator listIterator=list.listIterator ();
while (listIterator.hasNext ()){
System.out.println (listIterator.nextIndex ()+":"+listIterator.next ());
}
System.out.println ("--------使用列表迭代器从后往前--------");
while (listIterator.hasPrevious ()){
System.out.println (listIterator.previousIndex ()+":"+listIterator.previous ());
}
//判断
System.out.println (list.contains ("小米"));
System.out.println (list.isEmpty ());
//获取位置
System.out.println (list.indexOf ("华为"));
}
}
(6)列表迭代器与iterator迭代器的区别
- ListIterator可以双向遍历、添加、删除和修改元素
- Iterator只有hasNext()、next()、remove()方法
(7)List子接口的使用案例二
- 添加元素
//创建集合
List list=new ArrayList ();
list.add (20);
list.add (30);
list.add (40);
list.add (50);
list.add (60);
list.add (70);
System.out.println ("元素个数:"+list.size ());
System.out.println (list.toString ());
这里我们可以注意到添加的是基本类型数据,其实这里就涉及到了自动装箱的一个原理(将基本类型自动转换为引用类型)
- 删除操作
//删除操作:remove方法是根据下标进行删除
list.remove (0);
System.out.println ("元素个数:"+list.size ());
System.out.println (list.toString ());
那如果我们就是要通过数值来进行删除那应该怎么办呢?其实很简单,我们只需要进行装箱操作即可(转成Object或者Integer),如下:
list.remove ((Object)20);
- 补充一个方法:subList:返回子集合,含头不含尾
//补充方法subList:返回子集合,含头不含尾
List subList=list.subList (1,3);
System.out.println (subList.toString ());
♥后面一起详细学习List的实现类ArrayList♥