Java中Set的顺序问题

前言

Java中Set继承于Collection接口,是一个不允许出现重复元素的集合,其主要实现且使用最多的类就是HashSet。都知道HashSet是无序的,那么当我们需要用到有序的Set的时候该怎么办呢?

有序性

我们平时所说的有序性分两种情况,插入顺序和自然顺序。
插入顺序指的是集合元素的添加顺序。而自然顺序则是经过集合自动排序后的顺序。

实现类

Set的实现类中LinkedHashSet能按照插入顺序遍历元素;TreeSet能按照自然顺序遍历元素。

LinkedHashSet

public class Order {
    public static void main(String[] args) {
        Set set = new LinkedHashSet();
        set.add(2);
        set.add(7);
        set.add(4);
        set.add(1);
        for (Integer i : set) {
            System.out.println(i);
        }
    }
}

输出结果为

2
7
4
1

TreeSet

public class Order {
    public static void main(String[] args) {
        Set set = new TreeSet();
        set.add(2);
        set.add(7);
        set.add(4);
        set.add(1);
        for (Integer i : set) {
            System.out.println(i);
        }
    }
}

输出结果为

1
2
4
7

你可能感兴趣的:(Java中Set的顺序问题)