唠唠SE的集合-09——Map接口

9. Map

将键映射到值的对象,一个映射不能包含重复的键,但值可以重复。每个键最多只能映射到一个值。

Map是双列的;Collection是单列的

Map的键唯一;Collection的子体系Set是唯一的

Map集合的数据结构只针对键有效,跟值无关;Collection集合的数据结构是针对元素有效

 

1、添加:

1、V put(K key, V value) (可以相同的key值,但是添加的value值会覆盖前面的,返回值是前一个,如果没有就返回null)

2、putAll(Map<? extends K, ? extends V> m) 从指定映射中将所有映射关系复制到此映射中(可选操作)。

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

public class Test {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        map.put("胖虎", 10);
        map.put("小夫", 99);
        map.put("大雄", 0);
        Map<String, Integer> map2 = new HashMap<>();
        map2.putAll(map);
    }
}

2、删除

1、remove() 删除关联对象,指定key对象

2、clear() 清空集合对象

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

public class Test {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        map.put("胖虎", 10);
        map.put("小夫", 99);
        map.put("大雄", 0);
        System.out.println(map.size()); // 3
        map.remove("胖虎");
        System.out.println(map.size()); // 2
        map.remove("胖虎");
        System.out.println(map.size()); // 2
        map.clear();
        System.out.println(map.size()); // 0
    }
}

3、获取

value get(key); 可以用于判断键是否存在的情况。当指定的键不存在的时候,返回的是null。

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

public class Test {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        map.put("胖虎", 10);
        map.put("小夫", 99);
        map.put("大雄", 0);
        
        Integer num1 = map.get("胖虎");
        Integer num2 = map.get("静香");
        System.out.println(num1); // 10
        System.out.println(num2); // null
    }
}

4、判断:

1、boolean isEmpty() 长度为0返回true否则false

2、boolean containsKey(Object key) 判断集合中是否包含指定的key

3、boolean containsValue(Object value) 判断集合中是否包含指定的value

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

public class Test {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        map.put("胖虎", 10);
        map.put("小夫", 99);
        map.put("大雄", 0);
        
        System.out.println(map.containsKey("胖虎")); // true
        System.out.println(map.containsValue("0")); // false
        System.out.println(map.containsValue(0)); // true
    }
}

5、长度:

int size() (前面已经有过了。。。)

 

迭代Map的方式:

1)使用Map.Entry<K, V> 与Map中的entrySet方法配合使用;2)增强for循环

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

public class Test {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        map.put("胖虎", 10);
        map.put("小夫", 99);
        map.put("大雄", 0);
        
        //Iterator遍历
        Set<Map.Entry<String, Integer>> set = map.entrySet();
        Iterator<Map.Entry<String, Integer>> iterator = set.iterator();
        while (iterator.hasNext()) {
            Map.Entry<String, Integer> entry = iterator.next();
            System.out.println(entry.getKey() + "的成绩是:" + entry.getValue());
        }
        
        //增强for循环遍历
        for (Map.Entry<String, Integer> entry : map.entrySet()) {
            System.out.println(entry.getKey() + "的成绩是:" + entry.getValue());
        }
    }
}

不要忘记!不能在for循环里进行增删操作!

 

-------------------HashMap与TreeMap-----------------------

对于K来讲与Set对应的部分完全一致,故不再赘述。

不过对于HashMap来讲,这是个蛮深奥的东西,我会另起一篇,深扒源码!

转载于:https://my.oschina.net/LinkedBear/blog/1616026

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值