java类集框架之Collection及其子接口List、Set详解

1. 类集概述

java类集框架位于java.util包下,是JDK1.2产生的,它的本质其实就是动态数组。
动态数组:当元素个数达到最大值时,动态增加容量,解决数组定长的问题
在java的类集中,提供了两个最为核心的接口:Collection、Map
Collection接口及其子接口:每次进行数据操作时,都是对单个对象进行处理
Map接口:对键值对进行操作处理

2. 关于Collection接口
2.1 Collection的定义和常用方法

Collection接口是单个对象保存的最顶层的父接口它的构造方法如下:
public interface Collection extends Iterable
看一下他有哪些常用方法:
在这里插入图片描述
其中我们最常使用有两个方法:
add() :向集合中添加元素
iterator():取得集合的迭代器
由于Collection接口制定了数据的存储标准,而没有区分具体的存储类型,因此我们在使用时一般不直接使用Collection接口,而是使用它的两个子接口
List:允许元素重复
Set:不允许元素重复

2.2 List接口

List接口除了有Collection接口提供的那些方法之外。还有两个自己独有的方法
get(int index):根据指定索引获取元素
set(int index, E element): 修改指定索引处的元素,返回修改前的元素
在List接口下有三个重要子类:ArrayList、LinkedList、Vector
ArrayList:
public class ArrayList extends AbstractList implements List

LinkedList:
public class LinkedList extends AbstractSequentialList implements List
public abstract class AbstractSequentialList extends AbstractList

Vector:
public class Vector extends AbstractList implements List

AbstractList:
public abstract class AbstractList extends AbstractCollection implements List
我们可以看到ArstractList已经实现了List,但是ArrayList它们还要自己实现List接口。这是因为对于数组来说有一些基本的增删改查操作,我们把这些方法就放在ArstractList中,但是ArrayList等又有一些自己特有的方法,这时候就需要实现List接口去扩展自己的方法。
在这里插入图片描述
下面我们来具体看看List下的子类
2.2.1 ArrayList
ArrayList底层是一个对象数组,声明一个ArrayList对象时长度为0,只有第一次使用时,长度才会被置为10。这是一种懒加载策略。对集合的增删改查都是异步处理,性能较高,线程不安全。
2.2.2 Vector
底层实现是一个对象数组,声明一个Vector,初始化长度是10
对集合的修改都采用同步处理(直接在方法上使用内建锁),性能较低,线程安全
当数组长度不够用时,扩容策略变为原来数组的2倍
2.2.3 LinkedList
基于链表实现的动态数组

我们都直到List接口允许存储重复元素,如果我们想用List来存储自定义对象时,这时我们就需要自己覆写equals()方法了。因为当我们在使用List中的contains()和remove()方法时,它们都需要用到equals方法,对于基本类型和引用类型而言,Object已经帮他们覆写了equals()。但是自定义类并没有覆写,因此我们需要自己覆写。
下面通过一个例子,来看看如何使用List来存储自定义类对象。

class Person{
   
    private String name;
    private int age;
    public String getName() {
   
        return name;
    }
    public void setName(String name) {
   
        this.name = name;
    }
    public int getAge() {
   
        return age;
    }
    public void setAge(int age
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值