Chr*_*ris 3 java list data-structures
鉴于这种:
List<Integer> integers = new ArrayList<Integer>();
List<String> strings = new ArrayList<String>();
strings.add("One");
strings.add("Two");
strings.add("Three");
integers.add(new Integer(1));
integers.add(new Integer(2));
integers.add(new Integer(3));
Run Code Online (Sandbox Code Playgroud)
将这些列表合并到地图中的最佳方法是什么,如["One"=> 1,"Two"=> 2,"Three"=> 3]?
谢谢你的任何建议
And*_*s_D 12
假设两个列表的长度相等,并且键和值在两个列表中都具有相同的索引,那么这是一种简单的方法:
for (int i = 0; i < strings.size(); i++) {
map.put(strings.get(i), integers.get(i));
}
Run Code Online (Sandbox Code Playgroud)
只要List您使用的实现具有有效的get方法,Andreas或Mikera建议的代码就可以了.可能存在索引访问相当昂贵的情况(例如,LinkedList).
这就是为什么一般来说,你应该更喜欢这些程序的迭代器.
码:
Iterator<String> stringsItr = strings.iterator();
Iterator<Integer> integersItr = integers.iterator();
Map<String, Integer> map = new HashMap<String, Integer>();
while(stringsItr.hasNext() && integers.hasNext()) {
map.put(stringsItr.next(), integers.next());
}
Run Code Online (Sandbox Code Playgroud)