Map<Integer,String>,Integer表明時間撮,String表明文本信息
去重函數:就是刪除Map中value相同的元素,只保留key最小的那個元素函數
public static Map<Integer,String> RemoveRepFromMap(Map<Integer,String> map){排序
Set<Entry<Integer,String>> set = map.entrySet();
List<Entry<Integer,String>> list = new ArrayList<Entry<Integer,String>>(set);rem
Collections.sort(list,new Comparator<Entry<Integer,String>>(){
//重載compare函數 對list集合進行排序,根據value值進行排序,
public int compare(Entry<Integer,String> entry1,Entry<Integer,String> entry2){
return Integer.valueOf(entry1.getValue().hashCode()-entry2.getValue().hashCode());
}
});get
for(int i=0;i<list.size();i++){//刪除重複的元素
Integer key = list.get(i).getKey();
String value = list.get(i).getValue();hash
int j=i+1;//map中的下一個
if(j<list.size()){
Integer next_key = list.get(j).getKey();
String next_value = list.get(j).getValue();io
if(value == next_value){
if(key.hashCode() < next_key.hashCode()){map.remove(next_key);list.remove(j);
}else{
map.remove(key);list.remove(i);
}
i--;
}
}
return map;
}class
Map<Integer,String>首先的特性就是:鍵key若是相同,將會把原來的key進行覆蓋掉的,因此key必定不會重複List
幾個函數的做用說明:map
Map.Entry
表示單個映射關係即一個key+value
entrySet()方法返回此映射中包含的映射關係的 set 視圖集合,其實說白了就是 多個 key+value 的集合,解釋下這裏面的set,只有當key和value都一一對應相同的時候,纔不會被重複計算【而這種狀況根本就不會存到map裏面去,由於他會覆蓋原來的key】,若是key不一樣,鍵相同,依然是在entrySet裏面的