/**
* Set集合和Collection 接口中方法是一样
* Set:
* |--HashSet 哈希表(实际上是一个 HashMap 实例)支持。它不保证 set 的迭代顺序;
* |--LinkedHashSet 可预知迭代顺序(添加的顺序)的 Set 接口的哈希表和链接列表实现
* 特别是它不保证该顺序恒久不变。此类允许使用 null 元素。
* |--TreeSet 使用元素的自然顺序对元素进行排序,或者根据创建 set 时提供的 Comparator 进行排序,具体取决于使用的构造方法。
*
*/
public class LinkedHashSetDemo {
public static void main(String[] args) {
HashSet<String> hs = new LinkedHashSet<>();
HashSet<Personnel> hp = new LinkedHashSet<>();
fonctions(hs);
System.out.println();
fonctionp(hp);
}
private static void fonctions(HashSet<String> hs) {
//添加数据
hs.add("方明");
hs.add("张鹏");
hs.add("小芳");
hs.add("阿莉");
hs.add("c");
hs.add("XX");
System.out.println("打印对象数据源:"+hs);
iterators(hs);
}
private static void fonctionp(HashSet<Personnel> hp) {
//添加对象
Personnel p = new Personnel("xiaofang",18);
Personnel pr = new Personnel("zhangsan",10);
hp.add(new Personnel("lisi",20));
//添加两次
hp.add(new Personnel("lisi",20));
hp.add(new Personnel("wangwu",30));
hp.add(p);
hp.add(pr);
System.out.println("打印对象数据源:"+hp);
iteratorp(hp);
//其他的方法和HashSet方法相同
}
private static void iterators(HashSet<String> lp) {
System.out.println("循环迭代数据:");
Iterator<String> is = lp.iterator();
while(is.hasNext()){
System.out.println(is.next());
}
}
private static void iteratorp(HashSet<Personnel> lp) {
System.out.println("循环迭代数据:");
Iterator<Personnel> ip = lp.iterator();
while(ip.hasNext()){
System.out.println(ip.next());
}
}
}
运行结果:
打印对象数据源:[方明, 张鹏, 小芳, 阿莉, c, XX]
循环迭代数据:
方明
张鹏
小芳
阿莉
c
XX
打印对象数据源:[lisi:20, wangwu:30, xiaofang:18, zhangsan:10]
循环迭代数据:
lisi:20
wangwu:30
xiaofang:18
zhangsan:10
参考Api:
类 LinkedHashSet<E>
java.lang.Object |--java.util.AbstractCollection<E> |--java.util.AbstractSet<E> |--java.util.HashSet<E> |--java.util.LinkedHashSet<E>
构造方法摘要 | |
---|---|
LinkedHashSet() 构造一个带默认初始容量 (16) 和加载因子 (0.75) 的新空链接哈希 set。 |
|
LinkedHashSet(Collection<? extends E> c) 构造一个与指定 collection 中的元素相同的新链接哈希 set。 |
|
LinkedHashSet(int initialCapacity) 构造一个带指定初始容量和默认加载因子 (0.75) 的新空链接哈希 set。 |
|
LinkedHashSet(int initialCapacity, float loadFactor) 构造一个带有指定初始容量和加载因子的新空链接哈希 set。 |