原创声明:本文为作者原创,未经允许不得转载,经授权转载需注明作者和出处
接下来我们来说说Collection的另一个子接口Set。和List一样,Set也可以用来存放多个元素。我们主要来学习Set的三个实现类。
同样,它们之间的相同点有:
他们也有不同点:
下面我们以HashSet的方法来讲讲:
HashSet set = new HashSet();
set.add("大妖怪");
HashSet set = new HashSet();
set.add("大妖怪");
set.remove("大妖怪");
HashSet set = new HashSet();
set.add("大妖怪");
set.clear();
讲到这,你可能会疑惑以上的例子并没有像讲List那样把所有的结果都打印出来。那是因为我们接下来要重点讲一下Set的查询。
我们知道。set集合都是无序的,那么我们怎么来把它里面的元素打印出来呢?没错!无法单独取出来,只能用遍历。我们一般用for each遍历或者iterator迭代器。
HashSet set = new HashSet();
set.add("大妖怪");
set.add("小妖怪");
for (Object object : set) {
System.out.println(object);
}
HashSet set = new HashSet();
set.add("大妖怪");
set.add("小妖怪");
Iterator it = set.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
那么我们刚刚说set无法存重复元素,那么我们来试试:HashSet set = new HashSet();
set.add("大妖怪");
set.add("大妖怪");
set.add("大妖怪");
set.add("大妖怪");
set.add("大妖怪");
Iterator it = set.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
运行的结果你会发现不管存入多少个”大妖怪”,我们只能迭代出一个,也就是说,我们在往set里面存东西的时候,它会去已有的里面匹配,如果有,则覆盖掉原有的,因此不管存入多少都只会有一个。HashSet set = new HashSet();
set.add("大妖怪");
set.add("二妖怪");
set.add("三妖怪");
set.add("四妖怪");
set.add("五妖怪");
Iterator it = set.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
从这个的运行结果可以看出遍历出来的结果并没有按照我们存入的顺序来,可以课后做实验和另外两个Set做个对比。