在Java中,Set是一种不允许元素重复的集合,它是基于哈希表实现的。Set接口继承自Collection接口,常见的实现类有HashSet、LinkedHashSet和TreeSet。
HashSet是基于哈希表实现的Set,它不保证元素的顺序,存储和访问速度较快。HashSet的add、contains和remove方法的时间复杂度都是O(1)。
LinkedHashSet是基于哈希表和链表实现的Set,它按照元素插入的顺序维护了一个双向链表,所以它保证了元素的顺序。LinkedHashSet的add、contains和remove方法的时间复杂度都是O(1)。
TreeSet是基于红黑树实现的Set,它对元素进行了排序。TreeSet的add、contains和remove方法的时间复杂度都是O(log N)。
Set的常用方法包括:
- add(element):向Set中添加元素。
- remove(element):从Set中删除元素。
- contains(element):判断Set中是否包含某个元素。
- size():返回Set中元素的个数。
- isEmpty():判断Set是否为空。
- iterator():返回一个迭代器,用于遍历Set中的元素。
示例代码如下:
Set<String> set = new HashSet<>();
set.add("apple");
set.add("banana");
set.add("orange");
System.out.println(set.contains("apple")); // true
set.remove("banana");
System.out.println(set.size()); // 2
for (String element : set) {
System.out.println(element);
}
输出结果为:
true
2
apple
orange
注意,Set不允许有重复元素,所以如果向Set中添加已经存在的元素,添加操作会被忽略,不会抛出异常。