Java集合

本文深入解析Java集合框架,包括Collection、Iterator、List、Set、Map等接口及其主要实现类的特性与使用方法,如ArrayList、HashSet、HashMap等,探讨线程安全、排序策略及特殊用途的集合。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java Collection和Itrator接口

Collection接口中的定义的操作集合的的方法

boolean add(object o):添加对象,返回true

Itrator接口(迭代器)中定义的如下三个方法

hasNext()

next()

remove()

set集合(无序集合)

set集合判断两个元素是否相等是通过equals(判断两个对象的值是否相等)

HashSet类

通过判断对象的hashcode相等和equals相等来判断两个对象相等

注意:插入元素若是可变元素,那个它的hashcode也可能发生改变

HashSet类的子类LinkedHashSet (有序)

TreeSet类(采用红黑树的数据结构):是SortedSet接口的实现类,可以保证元素处于排序状态

自然排序:调用集合中的元素的compareTo(Object obj)方法来比较元素之间的大小关系,然后按照升序排序

注意:如果想要往TreeSet中添加对象,该对象的类必须要实现Comparable接口,并且实现接口中的comparaTo方法

注意二:在TreeSet集合中若插入可变元素的Field,一旦改变了元素的Field,当再次想删除该对象, 将会产生失败,所以建议在使用TreeSet和HashSet时,确定要插入的元素是不可变的。

定制排序:通过借助Comparator接口的帮助,在该接口中包含了一个int compare(T o1,T o2)的方法可以实现,

EnumSet集合:枚举类集合

上述三个set集合都是线程不安全的,可以使用collection工具类的synchroizedSortedSet方法来包装该set集合,此操作最好在创建时进行,防止岁set集合的意外非同步访问,例如SortedSet s = Collections.synchronizedSortedSet(new TreeSet(...));

 

 

List集合提供了一个ListIterator方法该方法返回一个ListIterator对象,ListIterator接口继承了Iterator接口,提供了专门的List方法。

 

ArrayList和Vector都是都为List类的两个典型实现完全支持List接口的全部功能:

参数initialCapacity参数决定集合的大小,会自动增加,也可以指定大小

还提供额外的两个方法来指定大小, void ensureCapacity(int minCapacicy);  //表示数组的长度增加minCapacity

void trimToSize();   //调整数组大小为当前元素的个数;

ArrayList集合不是线程安全的,但是Collection工具类,它可以将ArrayList变成线程安全

Vector还提供一个Stack子类来模拟栈这种数据结构,但是也不推荐使用,推荐使用LinkedList,它是List的实现类,是一个基于链表的实现的List类,LinkedList既实现了List接口,也实现了Deque接口,由于实现了Deque接口,因此可以作为栈来使用 

 

Map接口:不能存在重复的key-value键值对

 

实现类:HashMap:线程的不安全(可以通过使用Collection工具类使他变为线程安全);HashMap对象里面如果存在可变键值对,不能修改其中的key值,否则会出现无法正确访问其key值里面的value,访问时其中的value将变成null,只能删除

 

实现类:Hashtable:线程安全,不允许存在key为null,或者value为null

Hashtable子类:Properties类:方便修改属性文件,还提供读写field文件的方法

 

实现类:SortMap接口的TreeMap实现类:(TreeMap的所有key必须实现Comparable接口,也就是重写Comparable的equals()和comparedTo()方法)

 

实现类:WeakHashMap:与HashMap类的使用方法基本相同,但是HashMap的Key保留了对实际对象的强引用,这意味着只要该HashMap对象不被销毁,该HashMap的所有的Key所引用的对象不会被垃圾回收,也不会自动删除这些Key所对应的Key-value键值对;WeakHashMap中的每个Key对象只持有对实际对象的弱引用,当垃圾回收了该Key所引用的实际对象之后,WeakHashMap会自动删除该key对应的key-value对 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值