参考文档:http://www.java2s.com/Tutorials/Java/java.util/HashSet/index.htm
(一).Set集合
1.添加到容器中的元素不能重复,就算重复只按一个元素算!
2.Set集合继承Collection接口,方法全部来自Collection接口,自身没有定义其他方法。
3.Set接口主要两个实现类为HashSet、TreeSet。
4.Set集合中的元素不按特定顺序排序。因此我们无法向list一样根据索引获取数据。
(二).HashSet集合的使用
1.存取HashSet集合中的元素,是根据哈希码来存取。HashSet根据哈希码来确定元素在集合中存储的位置(内存地址)。
2.HashSet不能保证迭代顺序,且允许元素为null
3.比较两个HashSet集合是否相同,先比较hasCode()返回的值是否相同,在使用equals()方法比较两个HashSet存储位置是否相同。如果满足以上两个条件,则HashSet集合相同。
4.hasCode()和equals()方法必须一起使用,以保证判断HashSet一致性。
(三)代码演示
1.添加多个相同元素,但容器中只有一个
package com.Collection;
import java.util.HashSet;
public class TestHasSet {
public static void main(String[] args) {
HashSet<String> object=new HashSet();
object.add("中国");
object.add("中国");
object.add("中国");
object.add("中国");
System.out.println("object"+object);
}
}
2.清空HashSet中的所有元素
package com.Collection;
import java.util.HashSet;
public class TestHasSet {
public static void main(String[] args) {
HashSet<String> object=new HashSet();
object.add("中国");
object.add("中国");
object.add("中国");
object.add("中国");
System.out.println("object"+object);
object.clear();
System.out.println("清空object后"+object);
}
}
3.删除指定名称的元素
package com.Collection;
import java.util.HashSet;
public class TestHasSet {
public static void main(String[] args) {
HashSet<String> object=new HashSet();
object.add("中国");
object.add("美国");
object.add("日本");
object.add("俄罗斯");
System.out.println("object"+object);
object.remove("中国");
System.out.println("清空object后"+object);
}
}
4.使用迭代器遍历HashSet中的所有元素
package com.Collection;
import java.util.HashSet;
import java.util.Iterator;
public class TestHasSet {
public static void main(String[] args) {
HashSet<String> object=new HashSet();
object.add("中国");
object.add("美国");
object.add("日本");
object.add("俄罗斯");
Iterator iterator = object.iterator();
while (iterator.hasNext()){
System.out.println("遍历HashSet中的所有元素: "+iterator.next());
}
}
}
5.获取HashSet集合中的元素个数
package com.Collection;
import java.util.HashSet;
import java.util.Iterator;
public class TestHasSet {
public static void main(String[] args) {
HashSet<String> object=new HashSet();
object.add("中国");
object.add("美国");
object.add("日本");
object.add("俄罗斯");
System.out.println("HasHSet总元素为"+object.size());
}
}
(四) TreeSet集合的使用
1.TreeSet接口实现Set和SortedSet接口
2.TreeSet集合中的元素是有顺序的,如果要排序直接使用TreeSet
3.TreeSet的使用和其他集合差不多,
代码演示
1.排序
package com.Collection;
import java.util.TreeSet;
public class TestTreeSet {
public static void main(String[] args) {
TreeSet<String> ts=new TreeSet();
ts.add("张三");
ts.add("李四");
ts.add("王五");
ts.add("宋小宝");
ts.add("赵本山");
System.out.println("树集合"+ts);
System.out.println("树集合的第一个元素"+ts.first());
System.out.println("树集合最后一个 元素"+ts.last());
System.out.println("headSet(李四)"+ts.headSet("李四"));
System.out.println("tailSet(李四)"+ts.tailSet("李四"));
System.out.println("ceiling(四)"+ts.ceiling("四"));
}
}
2.遍历TreeSet集合中的元素
package com.Collection;
import java.util.Iterator;
import java.util.TreeSet;
public class TestTreeSet {
public static void main(String[] args) {
TreeSet<String> ts=new TreeSet();
ts.add("张三");
ts.add("李四");
ts.add("王五");
ts.add("宋小宝");
ts.add("赵本山");
Iterator<String> iterator = ts.iterator();
while (iterator.hasNext()){
System.out.println(iterator.next());
}
}
}