在我的Android应用中,我必须收集并计算一些信息。我不需要将它们保存在数据库中或其他位置,只需要将它们存储在内存中并用于某些处理即可。
所有值均为Integer
。数据示例如下:
123, 123, 124, 125, 126, 127, 128, 129, 130, 130, 130, 130 ...
然后将它们保存在HashMap / CustomClass / List中,对它们进行计数和排序,如下所示:
130: 4
123: 2
124: 1
125: 1
...
哪个是最好的方法? 我已经尝试过SparseArrays和HashMap。在仿真器上使用大约350.000的值进行计算(如何操作并不重要),存储和计算数据时,SparseArrays需要8秒,HashMap需要0.5秒。这就是我使用的代码:
@SuppressLint("UseSparseArrays")
public HashMap<Integer,Long> valueList = new HashMap<>();
public void addValue(int value){
if(valueList.containsKey(value)){
long count = 0;
try {
count = valueList.get(value); //here Android Studio reports: "Unboxing of 'valueList.get(value)' may produce 'java.lang.NullPointerException'"...
}catch (NullPointerException e){
e.printStackTrace();
}
valueList.put(value,count+1);
}else{
valueList.put(value,(long)1);
}
}
但是如何按值对它们进行排序?有更好的办法吗?
预先非常感谢。