常用Set集合
大约 1 分钟Java集合
Set集合的特点
- 不能存储重复元素。
- 没有索引。
HashSet
特点
- 底层数据结构是哈希表。
- 存储元素的顺序和遍历获取出来的顺序可能不一致。
- 没有索引。
- 集合中不能存储重复元素。
创建对象
// 构造一个新的空集合
public HashSet() {
map = new HashMap<>();
}
// 构造包含指定集合中的元素的新集合。
public HashSet(Collection<? extends E> c)
常见方法
// 往集合中添加元素,返回值代表添加是否成功
public boolean add(E e) {
return map.put(e, PRESENT)==null;
}
// 移除指定的元素,返回值代表移除是否成功
public boolean remove(Object o) {
return map.remove(o)==PRESENT;
}
// 判断集合中是否存在元素
public boolean contains(Object o) {
return map.containsKey(o);
}
// 清空集合
public void clear() {
map.clear();
}
// 返回集合大小
public int size() {
return map.size();
}
// 判断集合是否为空
public boolean isEmpty() {
return map.isEmpty();
}
遍历
迭代器遍历
public static void main(String[] args) {
HashSet<String> hashSet = new HashSet<>();
hashSet.add("hello ");
hashSet.add("hashSet ");
Iterator<String> iterator = hashSet.iterator();
while (iterator.hasNext()){
String next = iterator.next();
System.out.println(next);
}
}
foreach遍历
增强for循环:本质上还是迭代器遍历。
public static void main(String[] args) {
HashSet<String> hashSet = new HashSet<>();
hashSet.add("hello ");
hashSet.add("hashSet ");
for (String s : hashSet) {
System.out.println(s);
}
}
转换为数组遍历
public static void main(String[] args) {
HashSet<String> hashSet = new HashSet<>();
hashSet.add("hello ");
hashSet.add("hashSet ");
String[] strings = hashSet.toArray(new String[0]);
for (String s : strings) {
System.out.println(s);
}
}