Java Set 接口语法知识点及案例代码
Java 的 Set
接口是 Collection
接口的一个子接口,它不允许包含重复的元素。Set
接口的主要实现类有 HashSet
、TreeSet
和 LinkedHashSet
等。下面是一份关于 Java Set
接口的语法知识点及案例代码,内容具体且代码有注释。
Java Set 接口语法知识点
-
主要方法:
boolean add(E e)
: 添加指定元素到集合中,如果集合已经包含该元素,则返回false
。boolean remove(Object o)
: 从集合中移除指定元素,如果集合包含该元素,则返回true
。boolean contains(Object o)
: 如果集合包含指定元素,则返回true
。int size()
: 返回集合中的元素个数。void clear()
: 清空集合中的所有元素。boolean isEmpty()
: 如果集合不包含任何元素,则返回true
。Iterator<E> iterator()
: 返回集合的迭代器,用于遍历集合中的元素。
-
主要实现类:
HashSet
:基于哈希表实现,不允许包含重复元素,且元素是无序的。TreeSet
:基于红黑树实现,不允许包含重复元素,且元素是有序的(自然顺序或指定顺序)。LinkedHashSet
:具有HashSet
的所有特性,同时维护元素的插入顺序。
案例代码
下面是一个简单的示例,演示如何使用 HashSet
和 TreeSet
。
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;public class SetExample {public static void main(String[] args) {// 使用 HashSetSet<String> hashSet = new HashSet<>();hashSet.add("Apple");hashSet.add("Banana");hashSet.add("Cherry");hashSet.add("Apple"); // 重复添加,不会生效System.out.println("HashSet 内容: " + hashSet);// 使用 TreeSet(自然排序)Set<String> treeSet = new TreeSet<>();treeSet.add("Banana");treeSet.add("Apple");treeSet.add("Cherry");treeSet.add("Date");System.out.println("TreeSet 内容: " + treeSet);// 使用迭代器遍历 HashSetSystem.out.println("使用迭代器遍历 HashSet:");Iterator<String> hashSetIterator = hashSet.iterator();while (hashSetIterator.hasNext()) {System.out.println(hashSetIterator.next());}// 使用增强 for 循环遍历 TreeSetSystem.out.println("使用增强 for 循环遍历 TreeSet:");for (String fruit : treeSet) {System.out.println(fruit);}// 检查元素是否存在并移除元素if (hashSet.contains("Banana")) {hashSet.remove("Banana");}System.out.println("移除 Banana 后的 HashSet: " + hashSet);// 清空集合treeSet.clear();System.out.println("清空后的 TreeSet 是否为空: " + treeSet.isEmpty());}
}
代码解释
-
HashSet 示例:
- 创建一个
HashSet
实例并添加一些字符串元素。 - 尝试添加重复的元素(如 “Apple”),但
HashSet
不允许重复,因此不会生效。 - 打印
HashSet
的内容,可以看到元素是无序的。
- 创建一个
-
TreeSet 示例:
- 创建一个
TreeSet
实例并添加一些字符串元素。 TreeSet
会对元素进行自然排序,因此打印出的内容是有序的。
- 创建一个
-
遍历集合:
- 使用迭代器遍历
HashSet
,并打印每个元素。 - 使用增强 for 循环遍历
TreeSet
,并打印每个元素。
- 使用迭代器遍历
-
检查并移除元素:
- 检查
HashSet
是否包含某个元素(如 “Banana”),如果包含则移除它。 - 打印移除元素后的
HashSet
内容。
- 检查
-
清空集合:
- 清空
TreeSet
,并检查它是否为空。
通过这些示例代码和解释,初学者可以了解 JavaSet
接口的基本使用方法和常用功能。
- 清空
以下是一些关于Java Set接口的更多案例,这些案例涵盖了Set接口的不同使用场景和实现类。
案例一:使用HashSet存储不重复元素
import java.util.HashSet;
import java.util.Set;public class HashSetExample {public static void main(String[] args) {// 创建一个HashSet实例Set<String> set = new HashSet<>();// 添加元素到HashSet中set.add("apple");set.add("banana");set.add("orange");set.add("apple"); // 尝试添加重复元素,不会生效// 打印HashSet的内容System.out.println("HashSet内容: " + set);// 检查HashSet是否包含某个元素boolean containsApple = set.contains("apple");System.out.println("HashSet是否包含apple: " + containsApple);// 移除某个元素set.remove("banana");System.out.println("移除banana后的HashSet内容: " + set);// 清空HashSetset.clear();System.out.println("清空后的HashSet是否为空: " + set.isEmpty());}
}
案例二:使用TreeSet进行排序
import java.util.Set;
import java.util.TreeSet;public class TreeSetExample {public static void main(String[] args) {// 创建一个TreeSet实例Set<Integer> set = new TreeSet<>();// 添加元素到TreeSet中,元素会自动排序set.add(3);set.add(1);set.add(4);set.add(1); // 尝试添加重复元素,不会生效set.add(2);// 打印TreeSet的内容System.out.println("TreeSet内容: " + set);// TreeSet还支持自定义排序,通过Comparator接口实现// 以下是一个简单的示例,按元素的降序排序Set<Integer> customSortedSet = new TreeSet<>((o1, o2) -> o2 - o1);customSortedSet.add(3);customSortedSet.add(1);customSortedSet.add(4);customSortedSet.add(2);// 打印自定义排序后的TreeSet内容System.out.println("自定义排序后的TreeSet内容: " + customSortedSet);}
}
案例三:使用LinkedHashSet保持插入顺序
import java.util.LinkedHashSet;
import java.util.Set;public class LinkedHashSetExample {public static void main(String[] args) {// 创建一个LinkedHashSet实例Set<String> set = new LinkedHashSet<>();// 添加元素到LinkedHashSet中,元素会保持插入顺序set.add("apple");set.add("banana");set.add("orange");set.add("grape");// 打印LinkedHashSet的内容System.out.println("LinkedHashSet内容: " + set);// 遍历LinkedHashSet并打印每个元素for (String fruit : set) {System.out.println(fruit);}}
}
案例四:使用Set接口进行集合运算
import java.util.HashSet;
import java.util.Set;public class SetOperationsExample {public static void main(String[] args) {// 创建两个HashSet实例Set<String> set1 = new HashSet<>();set1.add("apple");set1.add("banana");set1.add("orange");Set<String> set2 = new HashSet<>();set2.add("banana");set2.add("grape");set2.add("orange");// 并集运算Set<String> unionSet = new HashSet<>(set1);unionSet.addAll(set2);System.out.println("并集: " + unionSet);// 交集运算Set<String> intersectionSet = new HashSet<>(set1);intersectionSet.retainAll(set2);System.out.println("交集: " + intersectionSet);// 差集运算(set1 - set2)Set<String> differenceSet = new HashSet<>(set1);differenceSet.removeAll(set2);System.out.println("差集: " + differenceSet);}
}
以上案例涵盖了Java Set接口的基本使用方法和常见操作,包括添加元素、检查元素是否存在、移除元素、清空集合、排序、保持插入顺序以及进行集合运算等。这些案例可以帮助初学者更好地理解和掌握Java Set接口的相关知识。