JAVA
map 정렬, 이차배열 정렬 관련 예제
데이25
2020. 10. 16. 23:22
내가 보려고 막 정리한 예제...
import java.util.*;
class Student implements Comparable<Student> {
int age;
public Student(int age) {
this.age = age;
}
@Override
public int compareTo(Student s) {
return this.age - s.age;
}
}
public class Main {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap();
map.put("B",200);
map.put("A",300);
map.put("C",100);
//1. Map B 200 , A 300 , C 100 으로 정의
//출력방법 3가지
//1. 엔트리로 출력
System.out.println("entry 출력");
for(Map.Entry<String, Integer> entry : map.entrySet()) {
System.out.println(entry);
System.out.println(entry.getKey() + " , " + entry.getValue());
}
//2. 키셋으로 출력
System.out.println("keySet으로 출력");
for(String key : map.keySet()) {
System.out.println(key + " : " + map.get(key));
}
//3. iter로 출력
System.out.println("iterator 이용");
for(Iterator<String> it = map.keySet().iterator(); it.hasNext() ;) {
String key = it.next();
System.out.println(key + " : " + map.get(key) );
}
//3-2 iter 출력 예제 2
System.out.println("iterator 사용 2");
Iterator<String> iter = map.keySet().iterator();
while (iter.hasNext()) {
String key = iter.next();
System.out.println(key + " , " + map.get(key));
}
//2.키에 의한 정렬
//1. Comp 저의
Comparator<String> comp = (o1, o2) -> o1.compareTo(o2);
Map< String, Integer> tmap = new TreeMap<>(comp);
tmap.put("B",300);
tmap.put("A",200);
tmap.put("C",100);
System.out.println("tree map 정렬");
for(Iterator<String> it = tmap.keySet().iterator() ; it.hasNext(); ) {
String key = it.next();
System.out.println(key + " : " + tmap.get(key));
}
//3. val 에 의한 정렬
List<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String, Integer>>(tmap.entrySet());
Collections.sort(list, new Comparator< Map.Entry<String , Integer> >(){
@Override
public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
return o1.getValue() - o2.getValue();
}
});
System.out.println("value 에 의한 정렬 ");
for( Map.Entry<String,Integer> entry : list ) {
System.out.println(entry.getKey() + " : " + entry.getValue() );
}
//4. 2차원 배열 정렬 -> {{ 2 , 400 } , { 1, 100 } , {2 , 100 }}; -> 무조건 오름차순 정렬로 한다고 치고
System.out.println("2차원 배열 정렬");
int[][] arr = {{ 2 , 400 } , { 1, 100 } , {2 , 100 }};
Arrays.sort(arr, (o1, o2) -> {
if (o1[0] == o2[0]) return o1[1] - o2[1];
else return o1[0] - o2[0];
});
for(int[] a : arr) {
System.out.println(a[0] + " : " + a[1]);
}
}
}