0
点赞
收藏
分享

微信扫一扫

Java——类集框架:List集合接口的详解及应用举例


目录

​​1、Java类集框架简介​​

​​2、类集框架核心接口​​

​​3、List集合接口​​

​​3.1、ArrayList子类​​

​​3.2、Vector子类​​

​​3.3、LinkedList子类​​

​​3.4、小结​​

1、Java类集框架简介

JDK1.2开始引入了类集框架的概念,Java中可以方便实现动态数组的操作,JDK1.5中泛型的出现,类集又避免了Object类对程序的影响。所有的类集开发类都保存在java.util包中。从JDK1.8中,类集支持了数据流的操作,支持MapReduce的操作。

一句话:类集的本质就是动态对象数组

2、类集框架核心接口

java.util包类集框架核心接口包括:

  • Collection接口(80%):负责保存单值的最大父接口;
  • List子接口(90%):可以保存重复元素,数据的保存顺序为数据的增加顺序;
  • Set子接口(10%):不可以保存重复元素,内部元素顺序可以调整;
  • Map接口(20%):提供的就是key与value的匹配信息;
  • 输出接口:Iterator、ListIterator、Enumeration。

Java——类集框架:List集合接口的详解及应用举例_List

结论:所有的集合保存数据目的就是为了输出。

  • Collection保存数据纯粹为了输出,所以最关注的就是增加与输出数据;
  • Map保存数据为了根据key查找value,是为了查找准备的。

Collection涉及的关键方法包括:

名称

作用

public boolean add(E e); 

向集合中追加数据

public void clear(); 

清空集合

public boolean contains(Object o);

判断集合内容是否存在

public boolean isEmpty();

判断集合是否为空

public int size(); 

获取集合中保存的数据个数

public boolean remove(Object o);

删除数据,依靠equals方法支持

public Iterator<E> iterator()

取得Iterator对象接口

add、Iterator两个方法使用频率较高。

3、List集合接口

List子接口保存数据的最大特点是可以进行重复数据的保存,其对Collection接口进行大量方法补充,常用的几个:

名称

作用

public E get(int index)

根据索引取得指定元素

public E set(int index,E element)

修改指定索引元素的内容

public ListIterator<E> listIterator()

为ListIterator接实例化

List属于接口,通过子类取得接口的示例化对象,常用的两个子类:ArrayList、Vector。List子接口继承结构如下:

Java——类集框架:List集合接口的详解及应用举例_List_02

3.1、ArrayList子类

JDK1.2时候推出的,只要使用了List接口,一般首选就是ArrayList。
【举例】:保存自定义类对象,删除指定index元素,注意contains、remove操作方法需要equals方法的支持,因此自定义类中需要覆写equals方法,否则contains、remove方法是无效的(remove直接删除指定index的话是有效的)。

List<Child> all = new ArrayList<Child>();
all.add(new Child(10,"张三","大庆"));
all.add(new Child(11,"李四","北京"));
all.add(new Child(12,"赵五","南京"));
all.remove(new Child(12,"赵五","南京"));
System.out.println(all);

//自定义类对象存在List中删除测试
class Child{
private int age;
private String name;
private String loc;

public Child(int age, String name, String loc) {
this.age = age;
this.name = name;
this.loc = loc;
}

@Override
public String toString() {
return "Child{" +
"age=" + age +
", name='" + name + '\'' +
", loc='" + loc + '\'' +
'}';
}

@Override
public boolean equals(@Nullable Object obj) {
if(obj==null){//判断是否为空,若不判断则会出先空指针异常(NullPointerException)
return false;
}
if(this==obj){//判断是否在与自身比较(通过比较地址),若是则直接返回true
return true;
}
if(!(obj instanceof Child)){//instanceof作用为判断其左边对象是否为右边对象的实例,此处为判断主方法中equals()方法括号中的对象是否为Person类
return false;
}
//到达此处时必定是同类但不同地址的对象在比较
Child child=(Child)obj;//向下转型,比较属性值
return this.age==child.age && this.name.equals(child.name)&& this.loc.equals(child.loc);//判定属性内容是否相等
}

}

3.2、Vector子类

属于旧的子类,打开Java Doc文档,可发现Vector与ArrayList的继承结构完全相同

Java——类集框架:List集合接口的详解及应用举例_List接口_03

Vector类中的方法基本是同步方法,属于线程的安全操作。

【举例】:利用Vector为List子接口实例化,操作上基本与ArrayList类似,不再写代码了,具体上只能根据源码来看。

ArrayList与Vector的具体区别是什么呢?

序号

区别点

ArrayList(90%)

Vector(10%)

1

推出时间

JDK1.2

JDK1.0

2

性能

异步处理,性能较高

同步处理,性能较低

3

安全性

非线程安全的操作

线程安全操作

4

输出

Iterator、ListIterator、foreach

Iterator、ListIterator、foreach、Enumeration

ArrayList是最常用的,以它的使用为主。

3.3、LinkedList子类

其为List接口的子类,操作上基本与ArrayList类似,也不再写代码了,要观察其与ArrayList的区别,需要看操作方法:

Java——类集框架:List集合接口的详解及应用举例_List_04

LinkedList是真正链表的实现类,功能比ArrayList跟丰富,但大部使用不到这个类,最多用的还是ArrayList.

3.4、小结

1)List子接口比Collection定义了更多的方法,List子接口中主要使用ArrayList子类。

2)List有一个关键方法,public E get(int index);

 

作于202003061510,已归档

———————————————————————————————————

本文为博主原创文章,转载请注明出处!

若本文对您有帮助,轻抬您发财的小手,关注/评论/点赞/收藏,就是对我最大的支持!

祝君升职加薪,鹏程万里!

举报

相关推荐

0 条评论