Java.util.Map

本文详细介绍了Map集合的特点,包括双列集合、Key不重复、Key和value一一对应等特性。同时,深入探讨了Map集合的常用方法,如put、remove、get及containsKey等,并提供了遍历Map集合的不同方式,包括通过keySet和entrySet进行遍历的具体实现。

概述

特点:

1.双列集合

2.Key不重复,value可重复

3.Key,value数据类型可以相同,也可以不同

4.Key和value一一对应

常用方法

V put(Object key)

返回值是该key值之前对应的value值。

V remove(Object key)

返回值是该key值之前对应的value值。(使用包装类接收,int不能接受null值)。

V get(Object key)

根据指定键,在map集合中找对应的值。

Boolean containsKey(Object key)

判断集合中是否包含指定的键。

Keyset()

entrySet()

遍历

通过键找值的方式遍历map集合。

  1. keySet()将map集合中所有的key取出放入set集合。
  2. 通过增强for循环或迭代器遍历set集合。来获取Map集合中的每一个key。
  3. 使用get(key)获取value。
  4. 使用Map方法entrySet()将map集合中多个Entry对象取出来,存储到一个set集合。
  5. 遍历set集合,获取每一个Entry对象
  6. 使用Entry对象中的方法getKey(),getValue()获取键与值。
 System.out.println("keySet方法迭代器遍历:");
        Set<Character> set=map.keySet();
//        迭代器遍历
        Iterator<Character> it=set.iterator();
        while(it.hasNext()) {
            char ch1=it.next();
            System.out.print(ch1+"->>"+map.get(ch1)+"\t");
        }
        System.out.println();
        System.out.println("keySet方法forEach遍历:");
//        forEach遍历
        for (Character arr:set) {
            System.out.print(arr+"-->"+map.get(arr)+"\t");
        }

使用entry对象遍历键值对

 Set<Map.Entry<Character,Integer>> set1=map.entrySet();
//        迭代器遍历
        System.out.println("Entry对象迭代器遍历:");
        Iterator<Map.Entry<Character,Integer>> it1=set1.iterator();
        while (it1.hasNext()){
            Map.Entry<Character,Integer> entry=it1.next();
            Character ch2=entry.getKey();
            Integer   inte=entry.getValue();
            System.out.print(ch2+"-->"+inte+"\t");
        }
        System.out.println();
        //        forEach遍历
        System.out.println("Entry对象forEach遍历:");
        for (Map.Entry<Character,Integer> arr1:set1) {
            Map.Entry<Character,Integer> entry1=arr1;
            System.out.print(entry1.getKey()+"-->"+entry1.getValue()+"\t");
        }

HashMap和LinkedHashMap

无序和有序。

 

Java 里,`java.util.ArrayList` 无法直接转换为 `java.util.Map`,因为它们属于不同的数据结构,`ArrayList` 是有序的元素列表,而 `Map` 是键值对的集合。出现 `java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.util.Map` 错误,表明尝试进行了不合法的类型转换。以下是几种解决办法: ### 手动转换 若 `ArrayList` 中的元素本身就是键值对形式,能手动遍历 `ArrayList` 并将元素添加到 `Map` 中。示例代码如下: ```java import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class ArrayListToMap { public static void main(String[] args) { // 假设 ArrayList 中的元素是键值对的形式,这里使用自定义对象来模拟 class KeyValuePair { private String key; private String value; public KeyValuePair(String key, String value) { this.key = key; this.value = value; } public String getKey() { return key; } public String getValue() { return value; } } List<KeyValuePair> arrayList = new ArrayList<>(); arrayList.add(new KeyValuePair("key1", "value1")); arrayList.add(new KeyValuePair("key2", "value2")); Map<String, String> map = new HashMap<>(); for (KeyValuePair pair : arrayList) { map.put(pair.getKey(), pair.getValue()); } System.out.println(map); } } ``` ### 依据特定规则转换 要是 `ArrayList` 中的元素存在特定规则,可根据该规则把元素转换为键值对添加到 `Map` 中。例如,`ArrayList` 中偶数索引的元素为键,奇数索引的元素为值: ```java import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class ArrayListToMapByRule { public static void main(String[] args) { List<String> arrayList = new ArrayList<>(); arrayList.add("key1"); arrayList.add("value1"); arrayList.add("key2"); arrayList.add("value2"); Map<String, String> map = new HashMap<>(); for (int i = 0; i < arrayList.size(); i += 2) { if (i + 1 < arrayList.size()) { map.put(arrayList.get(i), arrayList.get(i + 1)); } } System.out.println(map); } } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值