【发布时间】:2017-06-06 06:41:50
【问题描述】:
您好,我创建了一个逻辑来计算数组列表中的重复项,但它并没有按照我想要的确切顺序打印。下面我提供了我的代码和我的要求。
我需要以下格式,
list: [1, 1, 5, 3, 7, 3, 11, 2, 3, 1]
number: 1, count: 3
number: 5, count: 1
number: 3, count: 3
number: 7, count: 1
number: 11, count: 1
number: 2, count: 1
但是,我得到了以下格式,
list: [1, 1, 5, 3, 7, 3, 11, 2, 3, 1]
number: 1, count: 3
number: 2, count: 1
number: 3, count: 3
number: 5, count: 1
number: 7, count: 1
number: 11, count: 1
这是我的代码
package com.abc;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class MyArrayListSort
{
public static void main(String []args){
new MyArrayListSort().start();
}
public void start()
{
List<Integer> list = getList(1, 1, 5, 3, 7, 3, 11, 2, 3, 1);
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
for (Integer i : list)
{
Integer retrievedValue = map.get(i);
if (null == retrievedValue)
{
map.put(i, 1);
}
else
{
map.put(i, retrievedValue + 1);
}
}
System.out.println("list: " + list);
printCount(map);
}
private List<Integer> getList(int... numbers)
{
List<Integer> list = new ArrayList<Integer>();
for (int i : numbers)
{
list.add(i);
}
return list;
}
private void printCount(Map<Integer, Integer> map)
{
for (Integer key : map.keySet())
{
System.out.println("number: " + key + ", count: " + map.get(key));
}
}
}
【问题讨论】:
-
是什么让您认为
HashMap具有任何顺序,甚至在两个单独的迭代中具有相同的顺序?来自the documentation:“这个类不保证地图的顺序;特别是,它不保证顺序会随着时间的推移保持不变”。 -
我尝试使用 hashmap 以我想要的顺序获得结果 ....但是如果您可以在不使用 hashmap 的情况下帮助我,那么它会更好... :)