728x90
객체를 원하는 조건에 따라 정렬
public static void main(String[] args) {
int[][] arr = {{1,1},{-1,1},{2,3},{4,3},{0,0},{1,2}};
Coordinate[] coordinates = new Coordinate[arr.length];
for(int i=0; i<arr.length;i++){
coordinates[i] = new Coordinate(arr[i][0],arr[i][1]);
}
System.out.println(Arrays.toString(coordinates));
Arrays.sort(coordinates,Coordinate::compareTo);
System.out.println(Arrays.toString(coordinates));
}
static class Coordinate implements Comparable<Coordinate> {
int x;
int y;
public Coordinate(int x, int y){
this.x = x;
this.y = y;
}
@Override
public int compareTo(Coordinate o) {
return (Math.abs(x)<<1+Math.abs(y)<<1)-(Math.abs(o.x)<<1+Math.abs(o.y)<<1);
}
@Override
public String toString() {
return "x:"+x+" y:"+y;
}
}
좌표 (x, y) 값을 알고 있을 때 원점에서 (x, y)까지의 거리가 짧은 순으로 정렬하는 코드이다. 객체 class안에 Comparable <객체 Type>을 implements 하여 compareTo를 구현한 후 Arrays.sort를 이용하면 원하는 조건에 따라 쉽게 정렬 가능하다.
728x90
'Java' 카테고리의 다른 글
StringBuilder를 활용한 dfs (0) | 2022.11.21 |
---|---|
dfs 순열 알고리즘 (0) | 2022.11.19 |
Iterator 메소드 (0) | 2022.11.11 |
StringBuilder 초기화 하기 (0) | 2022.11.09 |
Queue 원소 꺼내지 않고 확인하기 (0) | 2022.11.08 |