设为首页 加入收藏

TOP

java -- Map接口和可变参数(一)
2023-07-25 21:32:22 】 浏览:80
Tags:java Map

Map

Map: 映射, 是双列集合顶层接口
java.util.Map<k,v>
k: key 键 唯一
v: value 值 可重复

常用方法和Entry

public V put(K key,V Value)
// 指定的键与指定值添加到Map集合中, 添加成功返回null, 添加失败返回之前的值
public V putIfAbsent(K key,V Value)
// jdk1.8后新增 键相同值不覆盖返回原来的值

public V get(Object key)
// 根据指定的键, 获取对应值, 不存在返回null
public V getOrDefault(Object key, V defaultValue)
// jdk1.8后新增 不存在返回defaultValue

public boolean containsKey(Object key)
// 判断集合中是否包含指定的键

public V remove(Object key)
// 根据指定的键, 删除一对元素, 返回被删除的值
public V remove(Object key, Object value)
// 根据指定的键和值, 都一致则删除, 返回被删除的值

Set<K> keySet()
// 获取存放所有键的Set集合
Collection<V> values()
// 获取存放所有值的集合

Set<Map.Entry<K, V>> entrySet()
// 获取键值对映射关系对象的Set集合


interface Entry<K,V>
K getKey()
// 获取映射关系对象中的键
V getValue()
// 获取映射关系对象中的值

LinkedHashMap

底层数据结构: 链表 + 哈希表
链表保证元素有序 哈希表保证元素唯一

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

        map.put("1张三",14);
        map.put("2李四",17);
        // put
        // 添加成功返回 null
        System.out.println(map.put("3王五", null));
        // 添加失败返回之前的值, 并用新值覆盖
        System.out.println(map.put("2李四", 19));

        // putIfAbsent
        // 键不存在添加新的键值对, 添加成功返回null
        System.out.println(map.putIfAbsent("4刘六", 19));
        // 若键存在 原有值不改变 并返回原有值
        System.out.println(map.putIfAbsent("1张三", 11));

        // get
        // 根据键找值, 存在则返回键对应的值
        System.out.println(map.get("1张三"));
        // 不存在则返回null
        System.out.println(map.get("2"));

        // getOrDefault
        // 键存在 返回对应值
        System.out.println(map.getOrDefault("1张三", -1));
        // 若不存在 则返回defaultValue
        System.out.println(map.getOrDefault("2", -1));

        // 判断集合中是否包含指定的键, 存在返回true, 不存在返回false
        System.out.println(map.containsKey("2李四"));

        // 根据键删除一对元素 返回被删除的值
        // 不存在则返回null
        System.out.println(map.remove("1"));
        System.out.println(map.remove("1张三"));

        System.out.println(map);

        // 遍历
        // 方式1
        // 获取存放所有键的集合
        Set<String> set = map.keySet();
        // 获取存放所有值的集合
        Collection<Integer> values = map.values();

        // 迭代器
        Iterator<Integer> iterator = values.iterator();
        while (iterator.hasNext()) {
            System.out.print(iterator.next() + " ");
        }
        System.out.println();
        // 增强for
        for (Integer value : values) {
            System.out.print(value + " ");
        }
        System.out.println();

        // 迭代器
        Iterator<String> it = set.iterator();
        while (it.hasNext()) {
            String key = it.next();
            System.out.print(key + " = " + map.get(key) + "\t");
        }
        System.out.println();
        // 增强for
        for (String s : set) {
            System.out.print(s + " = " + map.get(s) + "\t");
        }
        System.out.println();

        // 方式2
        // Entry是Map的内部类 所以调用时需要Map.Entry
        Set<Map.Entry<String, Integer>> entrySet = map.entrySet();
        // 迭代器
        Iterator< Map.Entry<String, Integer>> entries = entrySet.iterator();
        while (entries.hasNext()) {
            Map.Entry<String, Integer> next = entries.next();
            System.out.print(next.getKey() + " = " + next.getValue() + "\t");
        }
        System.out.println();
        // 增强for
        for (Map.Entry<String, Integer> entry : entrySet) {
            System.out.print(entry.getKey() + " = "+entry.getValue() + "\t");
        }
    }
}

TreeMap

java.util.TreeMap
底层数据结构是红黑树 键 排序 具有唯一性 不允许null键

首页 上一页 1 2 3 4 下一页 尾页 1/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇JVM:并发的可达性分析 下一篇once do, do it well

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目