前言
规则集(Set)扩展了Collection接口,Set接口又有三个具体类,分别是:
散列类HashSet
链式散列集LinkedHashSet
树形集TreeSet
本节初步介绍散列类HashSet、LinkedHashSet、TreeSet
HashSet
package Test;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class test2 {
public static void main(String[] args) {
//创建一个hash集合
Set<String>set=new HashSet<>();
set.add("London");
set.add("Paris");
set.add("New York");
set.add("San Francisco");
set.add("Beijing");
set.add("New York");
System.out.println(set);
//为哈希集合获取一个迭代器
Iterator<String> iterator=set.iterator();
//显示哈希集合中的每个元素
while (iterator.hasNext()){
System.out.println(iterator.next().toUpperCase()+" ");
}
}
}
运行结果
结果分析
可以看到,新建了hash集合之后放入一些重复的元素但是只显示了一个,而且HashSet默认是无序的,且不允许有重复元素,如果希望强制给他们一个顺序就需要使用LinkedHashSet类
代码简化
上面使用迭代器的代码可以简化成foreach的形式,代码如下:
for (String s :
set) {
System.out.println(s.toUpperCase());
}
效果是一样的。
LinkedHashSet
package Test;
import java.util.LinkedHashSet;
import java.util.Set;
public class test3 {
public static void main(String[] args) {
Set<String>set=new LinkedHashSet<>();
set.add("London");
set.add("Paris");
set.add("New York");
set.add("San Francisco");
set.add("Beijing");
set.add("New York");
System.out.println(set);
for (Object element :
set) {
System.out.println(element.toString().toLowerCase() + "");
}
}
}
运行结果
结果分析
LinkedHashSet会让其中的元素按照插入集合的顺序存储,但是因为无法存入重复的元素,所以后面进入的重复元素是无法被存储的
。
TreeSet
package Test;
import sun.reflect.generics.tree.Tree;
import java.util.HashSet;
import java.util.Set;
import java.util.TreeSet;
public class test4 {
public static void main(String[] args) {
Set<String> set=new HashSet<String>();
set.add("London");
set.add("Paris");
set.add("New York");
set.add("San Francisco");
set.add("Beijing");
set.add("New York");
TreeSet<String>treeSet=new TreeSet<>(set);
System.out.println("排序后的 tree set:\n" + treeSet);
System.out.println();
System.out.println("TreeSet的第一个元素" + treeSet.first());
System.out.println("TreeSet的最后一个元素" + treeSet.last());
}
}
运行结果
结果分析
在上述代码里,我们首先出创建了一个HashSet,由上文可知,HashSet是无序的,当我们创建TreeSet并且将HashSet赋值给TreeSet后,屏幕上打印出TreeSet的结果是按照字母顺序排序的元素集合。
同时TreeSet还提供了一些方法比如first()和last()可以显示集合中首位的位置。
转载:https://blog.csdn.net/qq_43576028/article/details/101842541
查看评论