Set集合
继承于Collection接口,所以set接口拥有所有Collection接口提供的常用方法,如修删改查,不允许包含相同的元素,
set的两个实现类,HashSet和TreeSet。
——HashSet:实现的本质就是HashMap,HashSet里面的元素是无序的。
——TreeSet:里面是元素是有序的。
HashSet实现Set接口,那么它也是一个不包含重复元素的无序集合。
允许使用null,但是有且仅有一个元素为null。
如果要向HashSet集合中存入元素,HashSet会调用该对象的hashCode()方法来得到该对象的hashCode值,然后根据 hashCode值来决定该对象在HashSet中存储位置。如果要把一个对象放入HashSet中,重写该对象对应类的equals方法,也应该重写其hashCode()方法。
简单的说在HashSet中,只有equals()方法返回TRUE时,hashcode值也相同,我们才定义成元素相等。
package com.newer.sf.集合框架体系;
import java.util.HashSet;
import java.util.Iterator;
public class HashSetTest {
public static void main (String[] args){
HashSet<String> set= new HashSet<String>();
set.add("AA");
set.add("DD");
set.add("AA");//重复元素,不进行存储
set.add("BB");
set.add("CC");
set.add("BB");//重复元素,不进行存储
//方式一:通过迭代器
Iterator<String> iter = set.iterator();
while(iter.hasNext()){
String s = iter.next();
System.out.println(s);
}
System.out.println("^^^^^^^^^^^^^^^^^^^^^^^^^");
//方式二 : 增强for
for(String s :set){
System.out.println(s);
}
}
}
TreeSet类跟HashSet一样,不允许重复对象,但是是有序的,元素按照自然顺序或者比较器的顺序排序。
TreeSet判断两个对象不相等的方式是两个对象通过equals方法返回false,或者通过CompareTo方法比较 没有返回0
package com.newer.sf.集合框架体系;
import java.util.Iterator;
import java.util.TreeSet;
public class TreeSetDemo {
public static void main(String[] args) {
TreeSet<String> set = new TreeSet<String>();
set.add("北京");
set.add("南京");
set.add("南昌");
set.add("天津");
for (String s : set) {
System.out.println(s);
}
}
}
注意:TreeSet是自动进行排序的,不可以存放null值。