java 集合

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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。

 












以上是关于java 集合的主要内容,如果未能解决你的问题,请参考以下文章

廖雪峰Java5Java集合-1Java集合简介-1Java结合简介

java 遍历集合的时候对集合进行操作

java集合是啥?

Java 集合类

Java集合源码剖析Java集合框架

Java集合