我们说我有一张地图和一张清单。如何为不同的密钥添加更多列表?我知道列表是通过引用传输的,但是最接近这个的方法是什么?
Map<Integer, List<Integer>> moves = new HashMap<Integer,List<Integer>>();
List<Integer> values = new LinkedList<Integer>();
//Populate the map of moves to use it later for equation verification
values.add(6);values.add(9);
moves.put(0, values);
values.clear();
moves.put(1, values);
values.add(3);
moves.put(2,values);
values.clear();
values.add(2);values.add(5);
moves.put(3, values);
values.clear();
moves.put(4, values);
values.add(3);
moves.put(5,values);
values.clear();
values.add(0);values.add(9);
moves.put(6,values);
values.clear();
moves.put(7, values);
moves.put(8, values);
values.add(0);values.add(6);
moves.put(9, values);
答案 0 :(得分:2)
您可以创建ArrayList
的新实例,其中包含您的值。
moves.put(0, new ArrayList<Integer>( values ));
这样,您不需要每次都将values
引用关联到新对象。
答案 1 :(得分:1)
您必须创建一个新对象。如果不是,则在所有键中放置相同的实例,并且当您从map中检索其值时,所有键都具有相同的实例。
Map<Integer, List<Integer>> moves = new HashMap<Integer,List<Integer>>();
List<Integer> values = new LinkedList<Integer>();
//Populate the map of moves to use it later for equation verification
values.add(6);values.add(9);
moves.put(0, values);
values = new LinkedList<Integer>();
values.add(8);
moves.put(1, values);