package com.shiyu.client.frame.utils;
import java.util.*;
import java.util.Map.Entry;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* Created by Administrator on 2017/1/3.
*/
public class CountSortList {
/**
* list倒序排序
* @param strs
* @return
*/
public static List<String> countStr(List<String> strs) {
Map<String, Integer> map = new HashMap<String, Integer>();
Set<String> set = new HashSet<String>(strs);
for (String str : set) {
for (String lstr : strs) {
if (str.equals(lstr)) {
if (map.containsKey(str)) {
Integer count = map.get(str);
count++;
map.put(str, count);
} else {
map.put(str, 1);
}
}
}
}
strs.clear();
Map<String, Integer> sortMap = sortMapByValue(map);
for (Map.Entry<String, Integer> entry : sortMap.entrySet()) {
strs.add(entry.getKey());
}
return strs;
}
/**
* Map倒序排序
* @param map
* @return
*/
private static Map<String, Integer> sortMapByValue(Map<String, Integer> map) {
List<Map.Entry<String, Integer>> mapList = new ArrayList<Map.Entry<String, Integer>>(map.entrySet());
Collections.sort(mapList, new Comparator<Map.Entry<String, Integer>>() {
@Override
public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
return o2.getValue() - o1.getValue();
}
});
Map<String, Integer> result = new LinkedHashMap<String, Integer>();
for (Map.Entry<String, Integer> entry : mapList) {
result.put(entry.getKey(), entry.getValue());
}
return result;
}
public Map<String, String> sortMapByKey(Map<String, String> oriMap) {
if (oriMap == null || oriMap.isEmpty()) {
return null;
}
Map<String, String> sortedMap = new TreeMap<String, String>( new Comparator<String>() {
public int compare(String key1, String key2) {
int intKey1 = 0, intKey2 = 0;
try {
intKey1 = getInt(key1);
intKey2 = getInt(key2);
} catch (Exception e) {
intKey1 = 0;
intKey2 = 0;
}
return intKey1 - intKey2;
}
});
sortedMap.putAll(oriMap);
return sortedMap;
}
private int getInt(String str) {
int i = 0;
try {
Pattern p = Pattern.compile("^\\d+");
Matcher m = p.matcher(str);
if (m.find()) {
i = Integer.valueOf(m.group());
}
} catch (NumberFormatException e) {
e.printStackTrace();
}
return i;
}
public static void main(String[] args) {
List<String> strs = Arrays.asList("a", "b", "c", "d", "e", "a", "a",
"a", "a", "b", "b", "b");
Map<String, Integer> map = new HashMap<String, Integer>();
Set<String> set = new HashSet<String>(strs);
for (String str : set) {
for (String lstr : strs) {
if (str.equals(lstr)) {
if (map.containsKey(str)) {
Integer count = map.get(str);
count++;
map.put(str, count);
} else {
map.put(str, 1);
}
}
}
}
Map<String, Integer> sortMap = sortMapByValue(map);
for (Map.Entry<String, Integer> entry : sortMap.entrySet()) {
System.out.println("Key : " + entry.getKey() + " Value : "
+ entry.getValue());
}
}
}
java List 倒序排序
原创
©著作权归作者所有:来自51CTO博客作者QC班长的原创作品,请联系作者获取转载授权,否则将追究法律责任

提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Java倒序集合 java list 倒序排序
位运算 位运算常用六种运算符& 按位与, 同1为1| 按位或, 同0位0^ 异或,两个位相同为0,相异为1~ 取反,0转1,1转0>> 右移,Java中右移,符号位不变,左边补上符号位<< 左移,各二进位全部左移若干位,高位丢弃,低位补0常用业务场景有:判断奇偶数,判断是否为2的整数次幂,左移,右移,两数交换,取相反数,取绝对值。//====位运算 pri
Java倒序集合 java list 倒序 java list倒序 java 日期间隔 java反射获取字段值