在Java中,Set集合是一个不允许重复元素的集合。它通过内部使用哈希表(HashMap)或树结构(如红黑树)来确保元素的唯一性。当你尝试向Set中添加一个已经存在的元素时,Set会忽略该操作,不会将其添加到集合中。
以下是一些常用的Set实现类:
- HashSet:基于哈希表的实现,插入和查询的时间复杂度为O(1)。但是,HashSet不保证元素的顺序。
import java.util.HashSet; import java.util.Set; public class Main { public static void main(String[] args) { Setset = new HashSet<>(); set.add("apple"); set.add("banana"); set.add("apple"); // 重复元素,不会被添加到集合中 System.out.println(set); // 输出:[banana, apple] } }
- TreeSet:基于红黑树的实现,插入和查询的时间复杂度为O(log n)。TreeSet中的元素会自动按照自然顺序或者自定义比较器进行排序。
import java.util.TreeSet; import java.util.Set; public class Main { public static void main(String[] args) { Setset = new TreeSet<>(); set.add("apple"); set.add("banana"); set.add("apple"); // 重复元素,不会被添加到集合中 System.out.println(set); // 输出:[apple, banana] } }
- LinkedHashSet:基于哈希表和链表的实现,插入和查询的时间复杂度为O(1)。LinkedHashSet会按照元素插入的顺序保持元素的顺序。
import java.util.LinkedHashSet; import java.util.Set; public class Main { public static void main(String[] args) { Setset = new LinkedHashSet<>(); set.add("apple"); set.add("banana"); set.add("apple"); // 重复元素,不会被添加到集合中 System.out.println(set); // 输出:[apple, banana] } }
这些Set实现类都可以确保元素的唯一性。你可以根据具体需求选择合适的实现类。