Java集合框架入门(一)——Set

前言

规则集(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()可以显示集合中首位的位置。

发布了100 篇原创文章 · 获赞 25 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_43576028/article/details/101842541