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值。