【JavaSE】集合类Collection集合Map集合的简单介绍,List接口,中三个常用子类ArrayList、Vector、LinkedList之间的比较。Set接口。

集合类

集合类就是动态的用数组保存一组对象的信息。在java中数组用的并不多就是因为数组的长度已经固定了,而集合类是动态的,数组长度可以改变。集合类(java.util包)有两大接口分别是:Collection和Map,实现这俩个接口的子类都可以保存对象信息,区别就是Collection是对单个对象进行保存,而Map保存的是一对对象,分别用Key、Value标识。

一、Collection接口

Collection接口的定义是:

public interface Collection<E> extends Iterable<E>

从JDK1.5开始发现Collection接口上追加有泛型应用,这样的直接好处就是可以避免ClassCastException,里面的所有数据的保存类型应该是相同的。在JDK1.5之前Iterable接口中的iterator()方法是直接在Collection接口中定义的。此接 口的常用方法有如下几个:

NO方法名称类型描述
1.public boolean add(E e)普通向集合中添加一个数据
2.public boolean addAll(Collection<? extend E> c)普通向集合中添加一组数据
3.public void clear()普通清空集合中的数据
4.public boolean contains(Object obj)普通查找数据是否存在,需要使用equals()方法
5.public boolean remove(Object obj)普通删除数据,需要使用equals()方法
6.public int size()普通取得集合长度
7.public Object[] toArray()普通将集合变为对象数组返回
8.public Iterator iterator()普通取得Iterator接口对象,用于集合的输出

以上方法add()和Iterator()方法使用的最多。一般并不会直接使用Collection接口,因为它只是一个存储数据的标准,并不能区分存储类型,例如:数据能否区分可重复和不可重复。所以Collection下面有两个子接口解决了如上问题:List接口(允许数据重复)、Set接口(不允许数据重复)。

1.List接口

在实际开发之中,List接口的使用频率可以达到Collection系列的80%。在进行集合处理的时候,优先考虑List接口。
首先来观察List接口中提供的方法,在这个接口中有两个重要的扩充方法 :

No方法名称类型描述
1.public E get (int index)普通根据索引取得保存数据
2.public E set(int index,E element)普通修改指定索引下的数据

List提供了一个get扩充方法,可以根据索引取得所保存的数据。由于List本身还是一个接口,要想使用这个方法,还得借助子类实例化对象。在List接口下有三个常用子类:ArrayList、Vector、LinkedList。
先用一张图看一下它们之间的继承关系:
在这里插入图片描述这些子类在使用上比较简单,在这里主要比较一下它们的区别:

子类内部数据结构出现时间性能线程是否安全
ArrayList数组实现JDK1.2异步处理,性能高非线程安全
Vector数组实现JDK1.0同步处理,性能低线程安全
LinkedList链表实现JDK1.2异步处理,性能高非线程安全
2.Set接口

Set接口与List接口最大的区别就是Set保存的数据不允许重复,而且Set没有对Collection接口进行扩充。
在Set接口中有两个常用子类:HashSet(无序存储)、TreeSet(有序存储)。看一下它们直接的关系图:
在这里插入图片描述可以看到Set的子类也是通过继承抽象类才实现Set的功能的。
既然TreeSet子类可以进行排序,所以我们可以利用TreeSet实现数据的排列处理操作。此时要想进行排序实际上是针 对于对象数组进行的排序处理,而如果要进行对象数组的排序,对象所在的类一定要实现Comparable接口并且覆写 compareTo()方法,只有通过此方法才能知道大小关系
在一般情况下都使用的是HashSet,数据太多的话比较起来很麻烦。

二、Map接口

Collection集合的特点是每次进行单个对象的保存,如果现在要进行一对对象(偶对象)的保存就只能使用Map集合来 完成
首先来观察Map接口定义:

public interface Map<K,V>

Map接口下的重要子类有:HashMap、TreeMap、EnumMap、HashTable。

区别HashMapHashTable
推出版本JDK1.2JDK1.0
性能异步处理性能高同步处理性能低
安全性非线程安全线程安全
null操作允许存放null(有且只有一个)key和value都不为null,否则出现NullPointerException

TreeMap性能没有HashMap高,但是它会对保存的数据进行排序,所以一般需要排序的时候才用TreeMap。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值