基于给定的层次结构和给定级别对Java中的数据进行排序

时间:2015-06-24 11:07:41

标签: java sorting

我正在尝试找出在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

1 个答案:

答案 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无法直接排序。

相关问题