아버지를 함정에 빠뜨리는 모임

3220 단어 컬렉션
이 섹션에서는 맵의 레코드를 키에 따라 정렬하는 방법에 대해 설명합니다. 맵 객체의 키는 Integer 유형이고 정렬 결과는 오름차순 또는 내림차순입니다.
주요 기술 분석:
l TreeMap만 유지된 기록을 키에 따라 정렬할 수 있기 때문에 다른 Map을 TreeMap으로 변환할 수 있다. 변환하는 방법은 Map 대상을 매개 변수로 TreeMap을 구성하는 것이다.
l TreeMap은 기본적으로 오름차순으로 정렬되며 정렬에 사용할 비교기를 지정할 수 있습니다.Comparator 인터페이스를 비교합니다.

import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.TreeMap;
 
public class SortMap1 {
   //  map
   private static void output(Map map) {
      //   map.entrySet() 
      Iterator it = map.entrySet().iterator();
      while (it.hasNext()) {
         Map.Entry<Integer, String> s = (Entry<Integer, String>) it.next();
         int key = s.getKey();
         String value = s.getValue();
         // System.out.println("map :"+key+", :"+value);
      }
 
      //  map.keySet() 
      it = map.keySet().iterator();
      while (it.hasNext()) {
         int key = (Integer) it.next();
         String value = (String) map.get(key);
         System.out.println("map :" + key + ", :" + value);
 
      }
 
   }
 
   public static void main(String[] args) {
      Map map = new HashMap();
      map.put(new Integer(5), "aaa");
      map.put(new Integer(8), "bbb");
      map.put(new Integer(4), "ccc");
      map.put(new Integer(7), "ddd");
      map.put(new Integer(3), "eee");
      map.put(new Integer(1), "fff");
      System.out.println(" map:");
      output(map);
  
      //  TreeMap mayMap 
      Map treeMap = new TreeMap(map);
      System.out.println(" map:");
      output(treeMap);
  
      //  
      TreeMap newTreeMap = new TreeMap(new MyComparator());
      newTreeMap.putAll(map);
      System.out.println(" map:");
      output(newTreeMap);
   }
}
 // 
class MyComparator implements Comparator {
 
   @Override
   public int compare(Object o1, Object o2) {
      int i1 = (Integer) o1;
      int i2 = (Integer) o2;
      if (i1 > i2) {
         return -1;
      }
      if (i1 < i2) {
         return 1;
      }
      return 0;
   }
}

주의:c1>c2,return-1은 내림차순,return1은 승차순

@Test
	public void compareTest() {
		List<Integer> list = new ArrayList<Integer>();
		list.add(3);
		list.add(8);
		list.add(2);
		list.add(1);
		list.add(4);
		list.add(0);

		Collections.sort(list, new Comparator<Integer>() {

			@Override
			public int compare(Integer o1, Integer o2) {
				if (o1 > o2) {
					return -1;
				}
				else {
					return 1;
				}
			}
		});
		System.out.println(list.toString());
	}
[8, 4, 3, 2, 1, 0]

좋은 웹페이지 즐겨찾기