是否可以在Java上将Map的键定义为List?

问题描述 投票:1回答:5

我要出于目的使用HashMap或任何Map。我想将Map变量的元素的key定义为:

<Integer, Integer>

Java上可能吗?

java map hashmap
5个回答
2
投票
Map<List<Integer>, SomethingElse> aMap =
    new HashMap<List<Integer>, SomethingElse>();

0
投票

您将需要编写一个类来用作地图的键。新类将容纳您的两个整数。确保实现equals()和hashCode()方法。


0
投票

可能不是最好的解决方案,但是您可以使用Pair(值得一提Point)。检查此线程What is the equivalent of the C++ Pair<L,R> in Java?


0
投票

这不是做到这一点的方法。我要做的是创建一种存储两个整数的包装器类,然后将该类实例化为每个映射条目的键。


0
投票

是,List可以作为键

是,您可以使用List作为地图的键。

注意:如果使用依赖于List结果的Map实现来跟踪键,则必须确保Map 总是返回相同的哈希码值。对于Object::hashCode,这意味着列表中的所有对象必须返回相同的哈希码值,并且您不能在列表中添加或删除对象。

如下表所示,Object::hashCodeList是两个不依赖List的实现。

IdentityHashMap

定义键的类

或者,创建一个类来容纳您的一对IdentityHashMap对象。

EnumMap

EnumMap的实例用作地图的键。

Object::hashCode

转储到控制台。

Object::hashCode

pairToString.toString():{IntegerPair {first = 10 | second = 11} =一个,IntegerPair {first = 20 | second = 21} = Twos,IntegerPair {first = 30 | second = 31} = Threes}

© www.soinside.com 2019 - 2024. All rights reserved.