list排序方法:Collections.sort(list)顺序排序,Collections.sort(list,Comparator<T>);自定义排序;这里结合的排序针对的是list,也就是说对于集合排序调用即可;
这里要说明Comparator它的泛型类型要与list的元素类型相同;比如List<String> list,而相对应的应该是Comparator<String>
List 和Map
List,集合,实现类ArrayList的有三种构造方法,
ArrayList() 构造一个初始容量为 10 的空列表。
ArrayList(Collection<? extends E> c) 将集合中的元素放到当前的列表中
ArrayList(int initialCapacity) 构造一个具有指定初始容量的空列表。
不常用的第二种方法就是解决map排序的关键。
我们知道遍历map时候有种方法for(Entry entry:map.entrySet())利用的就是Map.entry这个类,map.entrySet()可以看做是map变成集合set了
如果我们可以将map变成List,然后List在排序,那么就解决了Map排序的问题了。可以把Map.Entry变成List集合的元素,然后调用上面的第二种构造方法这样就把Map传遍成list了,如:List<Map.Entry<String, Integer>> mList = new ArrayList<Map.Entry<String, Integer>>(map.entrySet())
private static List<Integer> list;
private static Map<String, Integer> map;
static {
list = new ArrayList<Integer>();
Random r = new Random();
for(int i=0;i<10;i++){
list.add(r.nextInt(100));
}
map = new HashMap<String, Integer>();
map.put("apple", 10);
map.put("banana", 15);
map.put("origin", 5);
map.put("grape", 12);
}
public static void main(String[] args) {
System.out.println(list.toString());
Collections.sort(list,new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2-o1;
}
});
System.out.println(list.toString());
List<Map.Entry<String, Integer>> mList = new ArrayList<Map.Entry<String, Integer>>(map.entrySet());
Collections.sort(mList,new Comparator<Map.Entry<String, Integer>>() {
@Override
public int compare(Entry<String, Integer> o1,
Entry<String, Integer> o2) {
return o1.getValue()-o2.getValue();
}
});
for(Map.Entry<String, Integer> en:mList){
System.out.println(en.getKey()+";"+en.getValue());
}
List<Map.Entry<String, Integer>> llList = new ArrayList<Map.Entry<String,Integer>>(map.entrySet());
Collections.sort(llList,new Comparator<Map.Entry<String, Integer>>() {
@Override
public int compare(Entry<String, Integer> o1,
Entry<String, Integer> o2) {
// TODO Auto-generated method stub
return 0;
}
});
}
------解决思路----------------------
楼主,你想问啥