【Set】常用的使用 JAVA

本文介绍了 Java 中 Set 接口的三种实现方式:HashSet、TreeSet 和 LinkedHashSet 的特点及使用场景。通过示例展示了每种实现如何存储不重复元素,并保持各自的顺序特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Set不保存重复元素

java中的Set有三种常用的实现方式:

1,,HashSet : HashSet将数据存储哈希表中,性能最佳。(无序)

2,TreeSet:   TreeSet将数据存储在红黑树中,数据的顺序依据数据的值。(有序)

3,LinkedHashSet:   LinkedHashSet中的数据存储在哈希表中,同时被链表贯穿着。它的顺序是按照插入的顺序。(有序)

package com.robert.test1;

import java.util.HashSet;
import java.util.Set;

public class HashSetTest {

	public static void main(String[] args) {
		
		Set<String> peoples = new HashSet<String>();
		peoples.add("zhangsan");
		peoples.add("lisi");
		peoples.add("wangwu");
		peoples.add("laowu");
		
		System.out.println(peoples);
	}
}
输出结果:[wangwu, laowu, lisi, zhangsan]
package com.robert.test1;

import java.util.ArrayList;
import java.util.Set;
import java.util.TreeSet;

public class TreeSetTest {
	
	public static void main(String args[])
	{
		Set persons = new TreeSet();
		persons.add("green");
		persons.add("linda");
		persons.add("ada");
		persons.add("mike");
		persons.add("bread");

		System.out.println(persons);
	}
}
输出结果:[ada, bread, green, linda, mike]
package com.robert.test1;

import java.util.LinkedHashSet;
import java.util.Set;

public class LinkedHashSetTest {

	public static void main(String[] args) {
		Set persons = new LinkedHashSet();
		persons.add("green");
		persons.add("linda");
		persons.add("ada");
		persons.add("mike");
		persons.add("bread");

		System.out.println(persons);
	}
}
输出结果:[green, linda, ada, mike, bread]

### JavaSet 集合的常用方法 在 Java 编程语言中,`Set` 是一种包含重复元素的集合。它继承自 `Collection` 接口并提供了许多用于管理唯一元素的方法。以下是关于 `Set` 的一些常见操作及其功能描述。 #### 添加和删除元素 - **add(E e)**: 尝试将指定的元素添加到此集中。如果该集已包含指定元素,则会更改该集[^1]。 ```java boolean added = set.add("element"); ``` - **remove(Object o)**: 如果存在则从此集中移除指定元素(可选操作)。返回值表示是否成功移除了某个对象实例。 ```java boolean removed = set.remove("element"); ``` #### 查询操作 - **contains(Object o)**: 返回 true 当且仅当此集合包含指定的元素。 ```java boolean containsElement = set.contains("element"); ``` - **isEmpty()**: 测试此集合是否为空。 ```java boolean isEmpty = set.isEmpty(); ``` - **size()**: 返回此集合中的元素数。 ```java int setSize = set.size(); ``` #### 清理与遍历 - **clear()**: 移除此集合中的所有元素(使其变为空)。 ```java set.clear(); ``` - **iterator()**: 返回在此集合的元素上进行迭代的迭代器。 ```java Iterator<String> iterator = set.iterator(); while (iterator.hasNext()) { String element = iterator.next(); System.out.println(element); } ``` #### 转换与其他集合交互 - **toArray()**: 返回一个包含此集合中所有元素的数组。 ```java Object[] array = set.toArray(); ``` - **addAll(Collection<? extends E> c)**: 将另一个集合的所有元素都添加到当前集合中。 ```java boolean allAdded = set.addAll(otherSet); ``` #### 关于排序 虽然 `Set` 保证任何特定顺序,但如果需要对其中的内容按一定规则排序可以借助其他工具类完成。例如通过 `List` 和 `Collections.sort()` 或者直接利用实现 `SortedSet` 接口的数据结构如 `TreeSet` 来保持自然序或者定制化比较逻辑[^2]。 ```java // 使用 TreeSet 自动排序 Set<String> sortedSet = new TreeSet<>(new Comparator<String>() { @Override public int compare(String s1, String s2) { return Integer.compare(s1.length(), s2.length()); } }); sortedSet.add("apple"); sortedSet.add("banana"); System.out.println(sortedSet); // 输出基于字符串长度排序的结果 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值