详解Set和Map的使用

第十章:详解Set和Map的使用

一、Set 的使用详解

Set 是 Java 中的一个接口,它继承自 Collection 接口。Set 集合不允许存储重复的元素,并且不保证元素的顺序。以下是 Set 接口的一些常用方法和它们的示例:

构造方法

由于 Set 是一个接口,它没有直接的构造方法。但是,Java 提供了几个 Set 接口的实现类,例如 HashSetLinkedHashSetTreeSet,它们都有各自的构造方法。

常用方法

  1. add(E e):添加一个元素到 Set 集合中。

    Set<Integer> set = new HashSet<>();
    boolean added = set.add(1);
    
  2. remove(Object o):从 Set 集合中移除一个元素。

    boolean removed = set.remove(1);
    
  3. contains(Object o):检查 Set 集合是否包含指定的元素。

    boolean contains = set.contains(1);
    
  4. size():返回 Set 集合中元素的数量。

    int size = set.size();
    
  5. isEmpty():如果 Set 集合为空,则返回 true

    boolean empty = set.isEmpty();
    
  6. clear():移除 Set 集合中的所有元素。

    set.clear();
    
  7. toArray():返回 Set 集合中的元素数组。

    Object[] array = set.toArray();
    
  8. iterator():返回一个遍历 Set 集合的迭代器。

    Iterator<Integer> iterator = set.iterator();
    while (iterator.hasNext()) {
        Integer element = iterator.next();
        System.out.println(element);
    }
    
  9. containsAll(Collection<?> c):检查 Set 集合是否包含指定集合中的所有元素。

    Set<Integer> anotherSet = new HashSet<>();
    anotherSet.add(2);
    anotherSet.add(3);
    boolean containsAll = set.containsAll(anotherSet);
    
  10. addAll(Collection<? extends E> c):将指定集合中的所有元素添加到 Set 集合中。

    boolean addedAll = set.addAll(anotherSet);
    
  11. retainAll(Collection<?> c):仅保留 Set 集合和指定集合中都存在的元素。

    boolean retainedAll = set.retainAll(anotherSet);
    
  12. removeAll(Collection<?> c):从 Set 集合中移除指定集合中的所有元素。

    boolean removedAll = set.removeAll(anotherSet);
    

示例

以下是一个简单的 Set 使用示例:

import java.util.HashSet;
import java.util.Set;

public class SetExample {
    public static void main(String[] args) {
        Set<Integer> set = new HashSet<>();

        // 添加元素
        set.add(1);
        set.add(2);
        set.add(3);

        // 检查是否包含元素
        boolean contains = set.contains(2);
        System.out.println("Does the set contain 2? " + contains);

        // 移除元素
        boolean removed = set.remove(2);
        System.out.println("Was 2 removed? " + removed);

        // 获取集合大小
        int size = set.size();
        System.out.println("The size of the set is: " + size);

        // 检查集合是否为空
        boolean empty = set.isEmpty();
        System.out.println("Is the set empty? " + empty);

        // 清空集合
        set.clear();
        System.out.println("The set is now empty: " + set.isEmpty());

        // 使用迭代器遍历集合
        Iterator<Integer> iterator = set.iterator();
        while (iterator.hasNext()) {
            Integer element = iterator.next();
            System.out.println(element);
        }
    }
}

二、Map 的使用详解

Map 是 Java 中的一个接口,它定义了映射数据结构,其中每个键最多只能映射到一个值。Map 提供了键值对的集合,并允许通过键来查找、插入和删除对应的值。以下是 Map 接口的一些常用方法和它们的示例:

常用方法

  1. V put(K key, V value):将指定的值与此映射中的指定键关联。如果映射之前包含键的映射关系,则返回旧值,否则返回 null

    Map<String, Integer> map = new HashMap<>();
    Integer oldValue = map.put("key1", 1); // 返回 null,因为 "key1" 是新插入的
    
  2. V get(Object key):返回指定键所映射的值。如果映射不包含键的映射关系,则返回 null

    Integer value = map.get("key1"); // 返回 1
    
  3. V remove(Object key):移除指定键的映射关系(如果存在)。返回键的值。如果没有映射关系,则返回 null

    Integer removedValue = map.remove("key1"); // 返回 1,并且 "key1" 被移除
    
  4. int size():返回映射中键值对的数量。

    int size = map.size(); // 返回当前映射中键值对的数量
    
  5. boolean isEmpty():如果映射为空,则返回 true

    boolean empty = map.isEmpty(); // 检查映射是否为空
    
  6. void clear():移除映射中的所有键值对。

    map.clear(); // 清空映射中的所有键值对
    
  7. boolean containsKey(Object key):如果映射包含指定键的映射关系,则返回 true

    boolean contains = map.containsKey("key1"); // 检查 "key1" 是否存在于映射中
    
  8. boolean containsValue(Object value):如果映射包含一个或多个键的映射值为指定值,则返回 true

    boolean contains = map.containsValue(1); // 检查值 1 是否存在于映射中
    
  9. Set<K> keySet():返回映射中包含的键的 Set 视图。

    Set<String> keys = map.keySet(); // 获取所有键的集合
    
  10. Collection<V> values():返回映射中包含的值的 Collection 视图。

    Collection<Integer> values = map.values(); // 获取所有值的集合
    
  11. Set<Map.Entry<K, V>> entrySet():返回映射中包含的键值映射关系的 Set 视图。

    Set<Map.Entry<String, Integer>> entries = map.entrySet(); // 获取所有键值对的集合
    
  12. boolean equals(Object o):如果指定的对象与此映射相等(即,它们表示相同的键值映射关系),则返回 true

示例

以下是一个简单的 Map 使用示例:

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class MapExample {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();

        // 添加键值对
        map.put("key1", 1);
        map.put("key2", 2);

        // 获取键对应的值
        Integer value = map.get("key1");
        System.out.println("The value for 'key1' is: " + value);

        // 移除键值对
        Integer removedValue = map.remove("key1");
        System.out.println("The removed value for 'key1' is: " + removedValue);

        // 检查映射是否包含键
        boolean containsKey = map.containsKey("key2");
        System.out.println("Does the map contain 'key2'? " + containsKey);

        // 获取映射的大小
        int size = map.size();
        System.out.println("The size of the map is: " + size);

        // 清空映射
        map.clear();
        System.out.println("The map is now empty: " + map.isEmpty());

        // 获取所有键的集合
        Set<String> keys = map.keySet();
        System.out.println("The keys in the map are: " + keys);

        // 获取所有值的集合
        Collection<Integer> values = map.values();
        System.out.println("The values in the map are: " + values);

        // 获取所有键值对的集合
        Set<Map.Entry<String, Integer>> entries = map.entrySet();
        System.out.println("The entries in the map are: " + entries);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值