HashMap排序题

public class Test1 {
	public static void main(String[] args) {
		/*一直一个Hashmap的集合,写一个方式实现map的排序功能,
		 * 该方法的返回值与传入的参数均为Hashmap
		 * 要求对hashmap中的元素进行倒叙排列,排序时key与value的值不许拆开
		 * */
		Mapmap=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> entrySet = map.entrySet();
				
		List> list=new ArrayList<>(entrySet);
		Collections.sort(list, new Comparator>() {

			@Override
			public int compare(Entry o1, Entry o2) {
				// TODO Auto-generated method stub
				
				return o1.getValue().getAge()-o2.getValue().getAge();
			}
		});
            //再按照顺序将集合填充到linkedHashMap中
		LinkedHashMaplink=new LinkedHashMap<>();
		for (Entry entry : list) {
			link.put(entry.getKey(), entry.getValue());
		}
		System.out.println(link);
	}
}

2、关于collections类的方法:

static  boolean 
 addAll(Collection c, T... elements) 
          将所有指定元素添加到指定 collection 中。 

注意,后面的参数是集合的构成元素的类型,不是集合,zhuyi

代码:

	@Test
	public void test5(){
		Listlist3=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(){
		Listlist=new ArrayList<>();
		list.add(new User("tom",14));
		list.add(new User("jerry",13));
		Listlist1=new ArrayList<>();
		list1.add(new User("jack",12));
		Listlist3=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]]

 
sort(List list, Comparator c)

          根据指定比较器产生的顺序对指定列表进行排序。

sort(List list)
          根据元素的自然顺序 对指定列表按升序进行排序。(是根据元素的自然顺序进行排序,这里我理解为基本数据类型)

  

@Test
	public void test3(){
		Listlist=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();
		}

	}

你可能感兴趣的:(HashMap排序题)