繁体   English   中英

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

[英]Sorting data in Java based on given hierarchy and given level

我试图找出在 Hashmap 中对提供的数据集进行排序的方法。
数据需要按第一列中的所有周、产品和所有商店的渠道内的数据进行排序。 Stores 被映射到一个特定的通道,因此在对数据进行排序时,只有 store 应该在一个通道内而不是跨所有通道排列。 我可以在另一个哈希图(渠道,商店映射)中获得这种关系输出需要列出产品,商店,排名

我需要一些起点来解决这个问题,任何例子都会有所帮助。

示例数据集:

    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

我会从数据中生成一个对象。 因此,对象具有周、产品、存储和价值属性。 现在你把它们放在一个列表中(例如 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())
    }
}

然后使用比较器对列表进行排序。

Hashmap 不能直接排序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM