Map存储两个key:Duplicate key 6

简介: Map存储两个key:Duplicate key 6

map中的key是唯一的,如果map存储出现重复的key就会报错,所以key一般要选择唯一索引的字段

解决方案

 Map<String, Integer> sumTimeMap =
            workTimeVoList.stream().collect(Collectors.toMap(WorkTimeVo::getUserAccount, WorkTimeVo::getSumUseTime);

改为

 Map<String, Integer> sumTimeMap =
            workTimeVoList.stream().collect(Collectors.toMap(WorkTimeVo::getUserAccount, WorkTimeVo::getSumUseTime, (entity1, entity2) -> entity1));
            

出现重复时,存放最后一次的value,此处可以根据需求自行处理;

思考

map的key不可以重复,value可以,那么同一个key可以存储两个值吗,事实上是可以的

IdentityHashMap类利用哈希表实现 Map 接口,比较键(和值)时使用引用相等性代替对象相等性

package test;

import java.util.IdentityHashMap;

import java.util.Map;

import java.util.Map.Entry;

public class test1 {
public static void main(String[] args) {
String str1 = new String("xx");

String str2 = new String("xx");

System.out.println(str1 == str2);

Map map = new IdentityHashMap();

map.put(str1, "hello");

map.put(str2, "world");

for(Entry entry : map.entrySet())

{
System.out.println(entry.getKey()+" " + entry.getValue());

}

System.out.println(" containsKey---> " + map.containsKey("xx"));

System.out.println("str1 containsKey---> " + map.containsKey(str1));

System.out.println("str2 containsKey---> " + map.containsKey(str2));

System.out.println(" value----> " + map.get("xx"));

System.out.println("str1 value----> " + map.get(str1));

System.out.println("str2 value----> " + map.get(str2));

}

}

我们的看看输出的结果为:

false

xx world

xx hello

containsKey—> false

str1 containsKey—> true

str2 containsKey—> true

value----> null

str1 value----> hello

str2 value----> world

而将

String str1 = new String(“xx”);

String str2 = new String(“xx”);

替换为

String str1 = “xx”;

String str2 = “xx”;

则不会填入两个value

原因就是因为String是常量,同样的xx如果不new一块新的内存,它就会使用之前的引用

目录
相关文章
|
6月前
|
存储 Java
map中存储的是引用,而不是对象本身
该内容是关于Java编程中验证Map存储引用而非复制对象的示例。创建大型List导致内存增加,说明List确实占用空间。通过Person类示例,将不同对象放入Map,改变一个对象的属性后,比较原对象与Map中的键值对,发现两者相等,证明Map保存的是对象引用。
97 5
|
6月前
|
存储 安全 Go
|
28天前
|
存储 Java API
深入剖析Java Map:不只是存储数据,更是设计艺术的体现!
【10月更文挑战第17天】在Java编程中,Map是一种重要的数据结构,用于存储键值对,并展现了设计艺术的精髓。本文深入剖析了Map的设计原理和使用技巧,包括基本概念、设计艺术(如哈希表与红黑树的空间时间权衡)、以及使用技巧(如选择合适的实现类、避免空指针异常等),帮助读者更好地理解和应用Map。
81 3
|
18天前
|
存储 Java API
Java交换map的key和value值
通过本文介绍的几种方法,可以在Java中实现Map键值对的交换。每种方法都有其优缺点,具体选择哪种方法应根据实际需求和场景决定。对于简单的键值对交换,可以使用简单遍历法或Java 8的Stream API;对于需要处理值不唯一的情况,可以使用集合存储或Guava的Multimap。希望本文对您理解和实现Java中的Map键值对交换有所帮助。
22 1
|
5月前
|
存储 Java API
探讨Java中交换Map的Key和Value值的技术
探讨Java中交换Map的Key和Value值的技术
40 2
|
5月前
|
存储 分布式计算 DataWorks
MaxCompute产品使用合集之要存储用户的下单所有产品,然后查询时要进行产品分组的,一般这种字段要使用ARRAY还是MAP
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
5月前
|
存储 缓存 Java
Java交换map的key和value值
在Java中,直接交换`Map`的key和value是不允许的,因为key是唯一的且不可变。不过,可以通过创建新`Map`实现交换:将原`Map`的value作为新key,key作为新value。注意,如果原`Map`有重复value或null,需额外处理。以下是一个代码示例,展示了如何在value唯一且非null的情况下交换`Map`的key和value。对于重复value或null值的情况,可以使用`List`存储多个key或忽略null值。在实际应用中,`Map`常用于缓存、配置管理、数据库结果映射等多种场景。
63 1
|
5月前
|
存储 Java API
深入剖析Java Map:不只是存储数据,更是设计艺术的体现!
【6月更文挑战第18天】Java Map是键值对数据结构的艺术,展示了设计效率与易用性的平衡。HashMap利用哈希表实现快速访问,TreeMap通过红黑树保证排序。选择合适的实现类如HashMap、TreeMap或LinkedHashMap至关重要。注意空指针异常,谨慎在遍历时修改Map。Map的高效使用能提升编程效果。
28 0
|
6月前
|
Java API
List转Map(id为key,list为value)
List转Map(id为key,list为value)
257 0
|
6月前
|
Python
python 判断 map中是否存在key为a的值
在Python中,你可以使用`in`关键字来判断一个key是否存在于map(字典)中。例如: ```python my_map = {'a': 1, 'b': 2, 'c': 3} if 'a' in my_map: print('Key "a" exists in the map') else: print('Key "a" does not exist in the map') ``` 这段代码会输出"Key 'a' exists in the map",因为字典`my_map`中存在key为'a'的值。
358 1