Java:我可以拥有一个有3个arraylists作为其值的Map吗?

时间:2016-08-30 14:12:43

标签: java arraylist

我不确定如何说出问题。

让我们说,我们有一个词。

这个词将成为关键,这个键将有3个ArrayList。这可能吗?如果是这样,我该怎么做?

键|值

1 -ArrayList1
                  -ArrayList2
                  -ArrayList3

2 -ArrayList1
                  -ArrayList2
                  -ArrayList3

3 -ArrayList1
                  -ArrayList2
                  -ArrayList3

4 ......

好的,所以我要做的就是有一个与之相似的词。我想将这些分成不同的数组列表。

让我们说,关键是树 一个人的名单 清单1 tee,tre .... 清单2 tred,trid ...... 列出3棵树,treen ......

希望这是有道理的。 此外,我觉得这是一个愚蠢的方式来做到这一点。有没有更好的方法来做到这一点?

5 个答案:

答案 0 :(得分:4)

你可以制作这样的怪物

Map<String,List<List<String>> hugeMap = new HashMap<>();
hugeMap.get("anyKey").get(0)
hugeMap.get("anyKey").get(1)
hugeMap.get("anyKey").get(2)

或者你可以通过创建一个包含三个arraylist的类来做得更好。

e.g。

class MyNewClass{
List<String> list1;
List<String> list2;
List<String> list3;
}

然后你的地图就像这样

Map<String, MyNewClass> stillHugeMap = new HashMap<>();
stillHugeMap.get("anyKey").list1
stillHugeMap.get("anyKey").list2
stillHugeMap.get("anyKey").list3

答案 1 :(得分:1)

是的,你可以。但是你需要一个容器。

Map<String, Set<ArrayList<Object>> myMap = new HashMap<>();
Set<ArrayList<Object>> value1 = new HashSet<>();
value1.add(arrayList1);
value1.add(arrayList2);
myMap.put("1", value1);

答案 2 :(得分:0)

地图每个键可以有一个值。这意味着对于每个键,您需要一个包含这三个列表的包装器对象。

但我认为你应该从解释你真正需要的东西开始。

答案 3 :(得分:0)

有一个@echo off setlocal EnableDelayedExpansion set myvar=hello^ world echo !myvar! ,其中数组的大小始终为3。

答案 4 :(得分:0)

试试这个。

gettimeofday()

后者@Getter public class ListHolder<ONE, TWO, THREE> { private List<ONE> one = Lists.newArrayList(); private List<TWO> two = Lists.newArrayList(); private List<THREE> three = Lists.newArrayList(); }

Map<String, ListHolder<String, Integer, Object>> map = Maps.newHashMap();

我使用GoogleGuave来判断代码大小。