HashMap:新key的加入或旧key的value的改变会刷新map中key的位置,变化的key总是存储在最前面。
LinkedHashMap:有序的HashMap,key的改变不会影响key在map中的位置。
如下一道DB面试题:
/**
- @author hetao
- @date 2021/7/5
- 数字去重:输入一组数字,按数字出现的次数排序,次数多的排在最前面,次数相同按出现顺序排序。
- 使用LinkedHashMap 有序map, map排序
- 输入123,56,123,89
- 输出123,56,89
*/
public class test1 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String s[] = sc.nextLine().split(",");
Map<String ,Integer>map=new LinkedHashMap<>();
for (int i = 0; i < s.length; i++) {
if(map.containsKey(s[i]))
map.put(s[i],map.get(s[i])+1);
else
map.put(s[i],1);
}
List<Map.Entry<String ,Integer>>list=new ArrayList<>(map.entrySet());
Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {
@Override
public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
return o2.getValue().compareTo(o1.getValue());
}
});
Stack<String>stack=new Stack<>();
list.forEach(e-> stack.add(e.getKey()));
String s1 = stack.toString().replace("[","").replace("]","").replace(" ","");
System.out.println(s1);;
}
}
开始进入工作状态,尽量多的更新。