java 的Collection接口实例详解
作者:lqh 时间:2021-09-22 15:35:00
1. Collection是集合类的一个顶级接口,其直接继承接口有List与Set。
Collection
|--List:元素是有序的,元素可以重复。因为该集合体系有索引。
|--ArrayList:底层的数据结构使用的是数组结构。特点:查询速度很快。但是增删稍慢。线程不同步。
|--LinkedList:底层使用的链表数据结构。特点:增删速度很快,查询稍慢。线程不同步。
|--Vector:底层是数组数据结构。线程同步。被ArrayList替代了。因为效率低。
|--Set:元素是无序,元素不可以重复。
List: 特有方法。凡是可以操作角标的方法都是该体系特有的方法。
增:
add(index,element);
addAll(index,Collection);
删:remove(index);
改:set(index,element);
查:
get(index):
subList(from,to);
listIterator();
int indexOf(obj):获取指定元素的位置。
ListIterator listIterator();
List集合特有的迭代器。ListIterator是Iterator的子接口。
在迭代时,不可以通过集合对象的方法操作集合中的元素。因为会发生ConcurrentModificationException异常。
所以,在迭代器时,只能用迭代器的放过操作元素,可是Iterator方法是有限的,只能对元素进行判断,取出,删除的操作,
如果想要其他的操作如添加,修改等,就需要使用其子接口,ListIterator。该接口只能通过List集合的listIterator方法获取。
实例代码:
import java.util.*;
class ListDemo
{
public static void sop(Object obj)
{
System.out.println(obj);
}
public static void method()
{
ArrayList al = new ArrayList();
//添加元素
al.add("java01");
al.add("java02");
al.add("java03");
sop("原集合是:"+al);
//在指定位置添加元素。
al.add(1,"java09");
//删除指定位置的元素。
//al.remove(2);
//修改元素。
//al.set(2,"java007");
//通过角标获取元素。
sop("get(1):"+al.get(1));
sop(al);
//获取所有元素。
for(int x=0; x<al.size(); x++)
{
System.out.println("al("+x+")="+al.get(x));
}
Iterator it = al.iterator();
while(it.hasNext())
{
sop("next:"+it.next());
}
//通过indexOf获取对象的位置。
sop("index="+al.indexOf("java02"));
List sub = al.subList(1,3);
sop("sub="+sub);
}
public static void main(String[] args)
{
//演示列表迭代器。
ArrayList al = new ArrayList();
//添加元素
al.add("java01");
al.add("java02");
al.add("java03");
sop(al);
ListIterator li = al.listIterator();
//sop("hasPrevious():"+li.hasPrevious());
while(li.hasNext())
{
Object obj = li.next();
if(obj.equals("java02"))
//li.add("java009");
li.set("java006");
}
while(li.hasPrevious())
{
sop("pre::"+li.previous());
}
//sop("hasNext():"+li.hasNext());
//sop("hasPrevious():"+li.hasPrevious());
sop(al);
/*
//在迭代过程中,准备添加或者删除元素。
Iterator it = al.iterator();
while(it.hasNext())
{
Object obj = it.next();
if(obj.equals("java02"))
//al.add("java008");
it.remove();//将java02的引用从集合中删除了。
sop("obj="+obj);
}
sop(al);
*/
}
}
标签:java,Collection,接口
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Java如何将大文件切割成小文件
2022-12-27 07:40:40
![](https://img.aspxhome.com/file/2023/5/78965_0s.png)
IDEA 2020.1 搜索不到Chinese (Simplified) Language Pack EAP,无法安装的问题
2023-11-10 23:54:01
![](https://img.aspxhome.com/file/2023/6/59316_0s.jpg)
c# 值类型实例构造器
2023-12-23 16:10:10
设计简单的Android图片加载框架
2023-08-06 22:23:18
基于spring boot 的配置参考大全(推荐)
2021-11-28 23:32:41
Java开源工具iText生成PDF简单实例
2022-09-12 15:06:54
Java Iterator迭代器_动力节点Java学院整理
2022-11-08 13:50:39
MyBatis全局配置文件详解
2021-09-19 10:13:32
![](https://img.aspxhome.com/file/2023/3/69093_0s.png)
Java中Druid连接池连接超时获取不到连接的解决
2022-09-15 04:49:59
![](https://img.aspxhome.com/file/2023/4/63004_0s.png)
使用JDBC4.0操作XML类型的字段(保存获取xml数据)的方法
2021-08-25 17:44:38
Java实现几种序列化方式总结
2023-02-13 06:18:27
java与JSON数据的转换实例详解
2022-07-03 22:48:25
Springboot2以代码的方式统一配置Jackson教程
2021-08-30 16:47:33
使用Spring boot + jQuery上传文件(kotlin)功能实例详解
2022-09-03 14:12:21
![](https://img.aspxhome.com/file/2023/3/77963_0s.png)
java面试常问的Runnable和Callable的区别
2023-11-23 09:23:28
Android常用的AlertDialog对话框及自定义对话框
2021-05-31 05:09:51
![](https://img.aspxhome.com/file/2023/9/93319_0s.gif)
springcloud 如何解决微服务之间token传递问题
2022-08-27 18:43:48
MyBatis实现多表联合查询resultType的返回值
2023-03-11 22:25:37
Spring Boot(二)之web综合开发
2022-09-10 18:52:25
深入了解Java接口回调机制
2023-11-09 15:52:05
![](https://img.aspxhome.com/file/2023/0/59310_0s.png)