龙空技术网

Java Set的基本操作及高级用法

迷路的架构师 236

前言:

而今大家对“javaset排序”大约比较关怀,看官们都需要分析一些“javaset排序”的相关知识。那么小编也在网摘上收集了一些对于“javaset排序””的相关文章,希望朋友们能喜欢,兄弟们一起来学习一下吧!

Set是Java集合类中的一部分,继承了Collection接口。

特点:Set中的数据不允许重复。

基本操作

1、创建Set实例(以HashSet为例)

// 数据类型不能为基本类型Set<数据类型> set = new HashSet<>(); // 示例Set<Integer> set = new HashSet<>(); 

2、添加一个元素

使用 add 方法。

boolean add(E e);

示例:

Set<Integer> set = new HashSet<>();set.add(1);set.add(1);set.add(2);set.add(3);System.out.println(set); // 输出 [1, 2, 3]

3、添加一个集合

使用 addAll 方法。

boolean addAll(Collection<? extends E> c);

示例:

Set<Integer> set = new HashSet<>();set.add(1);set.add(1);set.add(2);set.add(3);Set<Integer> set1 = new HashSet<>();set1.add(1);set1.add(4);List<Integer> list = new ArrayList<>();list.add(1);list.add(5);set.addAll(set1);System.out.println(set); // 输出 [1, 2, 3, 4]set.addAll(list);System.out.println(set); // 输出 [1, 2, 3, 4, 5]

4、删除元素

使用 remove 方法。

boolean remove(Object o);

示例:

Set<Integer> set = new HashSet<>();set.add(1);set.add(1);set.add(2);set.add(3);set.remove(1);System.out.println(set); // 输出 [2, 3]

5、获取集合中元素个数

使用 size 方法。

int size();

示例:

Set<Integer> set = new HashSet<>();set.add(1);set.add(1);set.add(2);set.add(3);System.out.println(set.size()); // 输出 3

6、判断集合是否为空

使用 isEmpty 方法。

boolean isEmpty();

示例:

Set<Integer> set = new HashSet<>();set.add(1);set.add(1);set.add(2);set.add(3);System.out.println(set.isEmpty()); // 输出 false

7、判断集合中是否包含指定的元素

使用 contains 方法。

boolean contains(Object o);

示例:

Set<Integer> set = new HashSet<>();set.add(1);set.add(1);set.add(2);set.add(3);System.out.println(set.contains(1));

8、判断集合是否包含另外一个集合

使用 containsAll 方法。

boolean containsAll(Collection<?> c);

示例:

Set<Integer> set = new HashSet<>();set.add(1);set.add(1);set.add(2);set.add(3);Set<Integer> set1 = new HashSet<>();set1.add(1);set1.add(4);List<Integer> list = new ArrayList<>();list.add(1);list.add(3);System.out.println(set.containsAll(set1)); // 输出 falseSystem.out.println(set.containsAll(list));   // 输出 true

9、集合转数组

使用 toArray 方法,有两个方法可以使用,如下:

Object[] toArray();<T> T[] toArray(T[] a);

示例:

Set<Integer> set = new HashSet<>();set.add(1);set.add(1);set.add(2);set.add(3);Object[] objects = set.toArray();Integer[] integers = set.toArray(new Integer[0]);

10、清空集合元素

使用 clear 方法。

void clear();

示例:

Set<Integer> set = new HashSet<>();set.add(1);set.add(1);set.add(2);set.add(3);set.clear();
高级用法

1、集合几种方式

第一种:for循环遍历

for (Integer i : set) {    System.out.println(i);}

第二种:迭代器遍历

Iterator<Integer> iterator = set.iterator();while (iterator.hasNext()) {    System.out.println(iterator.next());}

第三种:foreach方式

set.forEach(System.out::println);

第四种:spliterator方式,比较不常用

Spliterator<Integer> spliterator = set.spliterator();spliterator.forEachRemaining(System.out::println);

2、求交集、差集、并集

首先准备两个集合:

Set<Integer> set = new HashSet<>();set.add(1);set.add(2);set.add(3);Set<Integer> set1 = new HashSet<>();set1.add(3);set1.add(4);set1.add(5);

差集:

set.removeAll(set1);

并集:

set.removeAll(set1);set.addAll(set1);

交集:

set.retainAll(set1);

3、EnumSet使用

使用EnumSet创建集合,如下:

public class SetDemo {    enum Fruit {APPLE, BANANA, PEAR}    public static void main(String[] args) {        Set<Fruit> fruitSet = EnumSet.of(Fruit.APPLE, Fruit.BANANA, Fruit.PEAR);        // EnumSet其他方法略    }}

4、TreeSet使用

使用TreeSet进行正向排序:

Set<Integer> set = new TreeSet<>();set.add(2);set.add(1);set.add(3);System.out.println(set); // 正向排序,输出 [1, 2, 3]

反向排序:

Set<Integer> set = new TreeSet<>(Comparator.reverseOrder());set.add(2);set.add(1);set.add(3);System.out.println(set); // 反向排序,输出 [3, 2, 1]

还可以自定义排序:

Set<Integer> set = new TreeSet<>(new Comparator<Integer>() {    @Override    public int compare(Integer o1, Integer o2) {        return o1 - o2;    }});set.add(2);set.add(1);set.add(3);System.out.println(set); // 自定义排序,输出 [1, 2, 3]

标签: #javaset排序