java 集合

java集合类主要由两个接口派生而出:Collection和Map

Collection :Set(无序集合,元素不可重复) List(有序集合,元素可以重复)Queue(队列)

Map:HashMap(线程不安全,key,value允许为null) Hashtable(线程安全,key value不能为null) TreeMap。

遍历集合的方式:

1)Iterator方式

List list = new ArrayList();
Iterator<student> iterator = list.iterator();
while(iterator.hasNext()) {
student next = iterator.next();
}

2)foreach循环遍历

List list = new ArrayList();
for (Object object : list) {
System.out.println(object);
}

3)for循环

List list = new ArrayList();
for (int i = 0; i < list.size(); i++) {
Object obj = list.get(i);
System.out.println(obj);
}

一。Set

1)HashSet是Set接口的典型实现,大多数时候使用Set集合时就是使用的这个实现类。

HashSet的特点:

不能保证元素的排序顺序,顺序可能与添加的顺序不同,顺序也可能发生变化。

HashSet不是同步的,如果多个线程同时访问同一个HashSet,假设有两个或者多个以上线程同时修改HashSet集合时,必须要通过代码来保证其同步。

集合的值可以为null。

HsahSet集合判断两个对象相等的标准是两个对象的equals方法比较相等,并且两个对象的hashCode值方法的返回值也相等。

当向HashSet集合中存入一个自定义类型元素时, 要注意重写自定义类型的的hashCode()方法和equals方法(),HashSet的会调用该对象的hashCode()方法来得到该对象的hahsCode值,然后根据该hashCode值决定该对象在HashSet中的存储位置,如果hash值不同就认为不是用一个对象,如果hash值相同就在判断equals是否为同一个对象。

2)TreeSet

TreeSet可以确保集合元素处于排序状态,TreeSet支持两种排序方法:自然排序和定制排序

自然排序:TreeSet会调用集合元素的compareTofangfa来比较元素之间的大小关系,然后按照元素的升序排序。

java的一些常见类都已经实现了Comparable接口,并提供了比较大小的标准。

如果试图把一个对象添加到TreeSet时,则该对象必须实现Comparable接口。

定制排序:

需要在创建TreeSet集合对象时,提供一个Comparator对象与该TreeSet集合关联,由该Comparator对象负责集合元素的排序逻辑。

二。List

1)ArrayList和Vector

两者都是基于数组实现的List类,两者封装了一个动态的允许在分配的Object数组。当添加的数组元素超过该数组的长度时,数组会自动扩容。

两者的区别:

ArrayList是线程不安全的,当多个线程访问同一个ArrayList集合时,如果有超过一个线程修改ArrayList集合则需要程序手动保证该集合的同步性。

而Vector线程是安全的,无须程序保证该集合的同步性。

2)LinkList

可以根据索引来随机访问集合中的元素。

三。Map

1)HashMap和Hashtable

两者区别:

1.Hashtable是一个线程安全的Map实现,但是HashMap是线程不安全的实现,所以HashMap比Hashtable的性能高一点,但如果有多个

线程访问同一个Map对象时,使用Hashtable实现类会更好。

2.Hashtable不允许null作为key和value,当HashMap可以使用null作为key或value。

 

转载于:https://www.cnblogs.com/strshun/p/7354463.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值