21xrx.com
2024-11-05 18:52:05 Tuesday
登录
文章检索 我的文章 写文章
Java中Set的用法详解:实现去重与集合运算
2023-06-16 11:26:45 深夜i     --     --
Java Set 去重

Set是Java中比较常用的集合类型之一,也是实现去重和集合运算的好帮手。本文将从Set的定义、常用方法以及代码案例三方面,详细介绍Java中Set类型的使用方法。

一、Set的定义

Set是一种不允许重复元素的集合类型,它的实现类有HashSet、TreeSet和LinkedHashSet。HashSet底层实现是哈希表,插入、删除和查找效率比较高;TreeSet底层实现是一种红黑树,允许对元素进行排序,查询效率较高;LinkedHashSet底层实现是哈希表+链表,维护了元素插入的顺序,插入和删除元素效率高。

二、Set常用方法

1. 添加元素

可以使用add()方法或addAll()方法往Set中添加元素,当元素已经存在于Set中时,add()方法会返回false,addAll()方法会忽略重复元素。

Set set = new HashSet<>();

set.add("apple"); // 添加元素

set.add("banana");

set.add("orange");

set.add("apple"); // 重复添加元素,返回false

System.out.println(set); // 输出 [orange, banana, apple]

2. 删除元素

可以使用remove()方法或clear()方法删除Set中的元素,remove()方法会返回true或false,表示是否删除成功。

Set set = new HashSet<>();

set.add("apple");

set.add("banana");

set.add("orange");

set.remove("banana"); // 删除元素

System.out.println(set); // 输出 [orange, apple]

3. 遍历元素

可以使用迭代器、for循环或forEach()方法遍历Set中的元素。

Set set = new HashSet<>();

set.add("apple");

set.add("banana");

set.add("orange");

// 使用迭代器遍历

Iterator iterator = set.iterator();

while (iterator.hasNext()) {

  System.out.println(iterator.next());

}

// 使用for循环遍历

for (String s : set) {

  System.out.println(s);

}

// 使用forEach()方法遍历

set.forEach(s -> System.out.println(s));

4. 判断是否包含元素

可以使用contains()方法判断Set是否包含某个元素,返回值为true或false。

Set set = new HashSet<>();

set.add("apple");

set.add("banana");

set.add("orange");

System.out.println(set.contains("apple")); // 输出 true

System.out.println(set.contains("pear")); // 输出 false

三、Set代码案例

1. 实现去重

使用Set可以很方便地实现对数组或集合的去重。

// 去重数组

int[] arr = 5;

Set set = new HashSet<>();

for (int i : arr) {

  set.add(i);

}

System.out.println(set); // 输出 [1, 2, 3, 4, 5]

// 去重List

List list = new ArrayList<>(Arrays.asList("a", "b", "c", "c", "d"));

Set set = new LinkedHashSet<>(list);

System.out.println(set); // 输出 [a, b, c, d]

2. 求两个集合的交集

使用Set可以很方便地求两个集合的交集、并集和差集。

Set set1 = new HashSet<>(Arrays.asList(1, 2, 3, 4, 5));

Set set2 = new HashSet<>(Arrays.asList(4, 5, 6, 7, 8));

set1.retainAll(set2); // 求交集

System.out.println(set1); // 输出 [4, 5]

3. 判断是否是子集合

使用containsAll()方法可以判断一个集合是否是另一个集合的子集合。

Set set1 = new HashSet<>(Arrays.asList(1, 2, 3, 4, 5));

Set set2 = new HashSet<>(Arrays.asList(2, 3, 4));

System.out.println(set1.containsAll(set2)); // 输出 true

四、关键词

Java、Set、去重

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复