Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ListMultimap不保留插入顺序_Java_List_Multimap - Fatal编程技术网

Java ListMultimap不保留插入顺序

Java ListMultimap不保留插入顺序,java,list,multimap,Java,List,Multimap,我目前正在编写一个电梯的模拟程序。因此,我需要创建一个ListMultiMap“passengerFloorMap”来存储以下值: 旅客身份证 乘客起点 旅客目的层 现在,我需要洗牌“passengerFloorMap”的钥匙。需要这样做,以创建到达的乘客的随机顺序。例如:首先是“passengerFloorMap”{1=[2,4],1=[3,4],1=[1,0],…} 然后只对键进行了洗牌,因为我想稍后选择相关的值: `private List<Integer> shuffle

我目前正在编写一个电梯的模拟程序。因此,我需要创建一个ListMultiMap“passengerFloorMap”来存储以下值:

  • 旅客身份证
  • 乘客起点
  • 旅客目的层
现在,我需要洗牌“passengerFloorMap”的钥匙。需要这样做,以创建到达的乘客的随机顺序。例如:首先是“passengerFloorMap”{1=[2,4],1=[3,4],1=[1,0],…}

然后只对键进行了洗牌,因为我想稍后选择相关的值:

`private List<Integer> shuffleKeyList(){
        keySet = new ArrayList<>(passengerFloorMap.keySet());
        Collections.shuffle(keySet); 
        return keySet;
 }
` Return example: [12, 130, 15, ...]
但是,如果我打电话

randomOrder.put(list.get(0), 3) 
它检索:

randomOrder = {46=[3]}
我发现问题应该是由内存引用引起的。 但我不知道如何解决这个问题。
希望有人能帮上忙。

我想你想说的是,你希望第一个元素是46=[3],而不是1=[3]

你上错课了。ArrayListMultimap仅保证保持键内元素的插入顺序,例如,如果插入(46,4)后跟(46,3),则会得到{46=[4,3]}。但如果您使用不同的键插入,它将使用HashMap来确定顺序


如果您想保持键的插入顺序,您需要一个。

对不起,如果我的描述不正确。我想将无序列表的所有键放入新的ListMultiMap“randomOrder”中。所以我需要在foor循环中得到put.(get(I),value)。对于put.(get(0),value),它正在工作。我试过“randomOrder.put((int)list.get(j),3);”和“randomOrder.put(list.get(j.int)value(),3);”但不起作用。但是谢谢你的描述,也许这是解决问题的正确方法。
keySet = [46, 39, 81, 38, 34, 87, 20, 71, 32,...]
list = [46, 39, 81, 38, 34, 87, 20, 71, 32,...]
randomOrder = {1=[3], 2=[3], 3=[3], 4=[3], 5=[3], 6=[3], 7=[3], 8=[3], 9=[3], ...]
randomOrder.put(list.get(0), 3) 
randomOrder = {46=[3]}