我有一個包含日期和產品發佈類型的地圖。使用地圖的鍵從值中選擇最高數據 - Java
示例(「2015/04/12」,「1 | Prod43」);
我的地圖值:
2015/08/27 1|Prod23
2015/12/15 1|Prod55
2016/04/08 1|Prod09
2016/04/09 2|Prod09
2016/04/12 3|Prod09
我想保持2周的ArrayList,dateList
遏制鍵,prodList
的值。但是約束是,在四月份,Prod09有三個版本,在「|」之前用數字表示。符號。我只想要任何月份的最新版本的產品。
在這裏,April有3個版本,我只想把第三版發佈到我的arrayList中。
需要我的ArrayList是這樣的:
dateList -> ["2015/08/27","2015/12/15","2016/04/12"]
prodList - >["1|Prod23","1|Prod55","3|Prod09"]
代碼:
{
Map<String,String> dateMap = new TreeMap<String,String>();
dateMap.put("2015/08/27","1|Prod23");
dateMap.put("2015/12/15","1|Prod55");
dateMap.put("2016/04/08","1|Prod09");
dateMap.put("2016/04/09","2|Prod09");
dateMap.put("2016/04/12","3|Prod09");
String test1="";
String test2="";
int count=0;
List<String> prodList = new ArrayList<String>();
List<String> dateList = new ArrayList<String>();
for (Map.Entry<String, String> entry : dateMap.entrySet())
{
String key = entry.getKey().substring(0,7);
String dateValue = entry.getValue();
if(("").equals(test1)){
test1=key;
test2=key;
}
if(!(test2.equals(key))){
dateList.add(key);
prodList.add(dateValue);
test2=key;
}else{
if(count<1){
dateList.add(key);
prodList.add(dateValue);
test2=key;
count++;
}
}
}
System.out.println("dateList: "+dateList);
System.out.println("prodList: "+prodList);
}
在上面的方法,我已經做到了查找最大的2日最新發布的,但如果釋放增加,這種方法會失敗。任何人都可以請建議我一個更好的方法來做到這一點。非常感謝您的幫助。
如果兩個產品在某個特定的日期發佈?在地圖鍵中應該是唯一的。 – Kajal
這不會發生在我的方案中,我的地圖的值從數據庫表填充,其中日期是主鍵。所以可能性可能是同一個月的不同日期。你能幫助 – Disera
你上面的代碼中的輸入鍵是不正確的。也許你想再次訪問它們? – Aakash