public class Test1 {
public static void main(String[] args) {
/*一直一个Hashmap<integer,User>的集合,写一个方式实现map的排序功能,
* 该方法的返回值与传入的参数均为Hashmap<integer,User>
* 要求对hashmap中的元素进行倒叙排列,排序时key与value的值不许拆开
* */
Map<Integer,User>map=new HashMap<>();
map.put(1, new User("tom",12));
map.put(2, new User("jerry",22));
map.put(3, new User("jack",25));
//强转,是为了调用Collections类的方法
Set<Entry<Integer, User>> entrySet = map.entrySet();
List<Entry<Integer,User>> list=new ArrayList<>(entrySet);
Collections.sort(list, new Comparator<Entry<Integer,User>>() {
@Override
public int compare(Entry<Integer, User> o1, Entry<Integer, User> o2) {
// TODO Auto-generated method stub
return o1.getValue().getAge()-o2.getValue().getAge();
}
});
//再按照顺序将集合填充到linkedHashMap中
LinkedHashMap<Integer, User>link=new LinkedHashMap<>();
for (Entry<Integer, User> entry : list) {
link.put(entry.getKey(), entry.getValue());
}
System.out.println(link);
}
}
2、关于collections类的方法:
static <T> boolean
addAll(Collection<? super T> c, T... elements)
将所有指定元素添加到指定 collection 中。
注意,后面的参数是集合的构成元素的类型,不是集合,zhuyi
代码:
@Test
public void test5(){
List<User>list3=new ArrayList<>();
User[]arr=new User[]{new User("tom",14),new User("jerry",13)};
Collections.addAll(list3, arr);
System.out.println(list);
}
这里注意上下两种addAll的用法,
@Test
public void test5(){
List<User>list=new ArrayList<>();
list.add(new User("tom",14));
list.add(new User("jerry",13));
List<User>list1=new ArrayList<>();
list1.add(new User("jack",12));
List<User>list3=new ArrayList<>();
list3.addAll(list);
list3.addAll(list1);
System.out.println(list3);
}
输出结果为:[User [name=tom, age=14], User [name=jerry, age=13], User [name=jack, age=12]]
|
@Test
public void test3(){
List<User>list=new ArrayList<>();
list.add(new User("tom",14));
list.add(new User("jerry",13));
list.add(new User("jack",12));
此三行没有实际意义,测试比较器的返回值
// UserComparor c = new UserComparor();
// int compare = c.compare(new User("tom",13), new User("jerry",13));
// System.out.println(compare);
Collections.sort(list,c);
System.out.println(list);
}
static class UserComparor implements Comparator{
@Override
public int compare(Object o1, Object o2) {
// TODO Auto-generated method stub
User u1=(User) o1;
User u2=(User) o2;
return new Integer(u1.getAge()).compareTo( new Integer(u2.getAge()));
//return u1.getAge()-u2.getAge();
}
}