2015-06-24 21 views
-2

我想找出在Hashmap中對提供的數據集進行排序的方法。
數據需要按照第一列的所有星期,產品和所有商店的渠道進行排序。 商店被映射到一個特定的渠道,因此,當對數據進行排序時,只有商店應該排在一個渠道中,而不是跨越所有渠道。 我可以在另一個HashMap中這種關係(通道,存儲映射) 輸出是必須的產品列表,存儲,排名基於給定的層次和給定級別的Java中的數據排序

我需要一些起始指針的問題所做的任何例子將是有益的。

實施例的數據集:

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 

回答

2

我會產生一個對象出來的數據。所以一個對象具有屬性星期,產品,商店和價值。現在你把它們放在一個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()) 
    } 
} 

然後用比較器對列表進行排序。

無法直接對Hashmap進行排序。