我正在尝试找出在Hashmap中对提供的数据集进行排序的方法 数据需要按照第一列中的所有周,产品和所有商店的渠道进行排序。 商店被映射到特定频道,因此在对数据进行排序时,只有商店应该在不在所有频道的频道内排名。 我可以在另一个hashmap(通道,商店映射)中获得这种关系 输出需要是列表产品,商店,等级
我需要一些启动指针来处理问题,任何示例都会有所帮助。
示例数据集:
w20150608,product1,str2,0.45003933910307
w20150615,product1,str2,0.46734854445319
w20150622,product1,str2,0.48790322580645
w20150629,product1,str2,0.41114558437124
w20150706,product1,str3,0.44112494989831
w20150713,product1,str3,0.46425188901919
w20150720,product1,str3,0.46339533571842
w20150727,product1,str1,0.4736739753277
w20150817,product1,str1,0.44352216102806
w20150824,product1,str1,0.43260774543229
w20150629,product1,str1,0.082229116874248
w20150706,product1,str1,0.088224989979662
w20150713,product1,str1,0.092850377803839
w20150720,product1,str4,0.092679067143684
w20150727,product1,str4,0.09473479506554
w20150803,product1,str4,0.1178756884343
w20150810,product1,str1,0.10616749715884
w20150817,product1,str1,0.088704432205613
w20150824,product1,str1,0.086521549086459
w20150831,product1,str1,0.087974955411327
答案 0 :(得分:2)
我会从数据中生成一个Object。因此,Object具有属性周,产品,存储和值。现在将它们放在List(例如ArrayList)中。
public class CustomComparator implements Comparator<DataObject> {
@Override
public int compare(DataObject o1, DataObject o2) {
if(o1.getWeek() <> o2.getWeek())
return o1.getWeek().compareTo(o2.getWeek());
if(o1.getProduct() <> o2.getProduct())
return o1.getProduct().compareTo(o2.getProduct());
else
return o1.getStore().compareTo(o2.getStore())
}
}
然后使用比较器对List进行排序。
Hashmap无法直接排序。