常用Set集合

HeJin大约 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);
    }
}