JavaRush /Java Blog /Random-KO /모든 객체 목록에서 Java Arrays.sort() 사용

모든 객체 목록에서 Java Arrays.sort() 사용

Random-KO 그룹에 게시되었습니다
특히 목록에 기본 숫자 데이터 유형이 아닌 List개체 래퍼( Byte, Integer, Short, Long, Double, )가 포함된 경우 정렬이 까다로울 수 있습니다. Float간단한 문제를 해결하거나 면접관의 질문에 답할 때 매우 유용할 수 있는 방법을 사용하는 것이 좋습니다. 모든 객체 목록에서 Java Arrays.sort() 사용 - 1먼저 를 채울 내용을 선택해 보겠습니다 List. Edges이 예에서는 간단한 데이터 구조의 그래프 가장자리( ) 목록을 사용합니다 Graph.
// Очень простой класс Edge (рёбро графа)
public class Edge {
    public Vertex src;
    public Vertex dst;
    public double cost;

    // создание ребра между двух вершин
    Edge(Vertex s, Vertex d, double c) {
        src = s;
        dst = d;
        cost = c;
    }
}
// Список рёбер
Edge[] edges = graph.getEdges();

그래프란 무엇입니까?

이산 수학에서 그래프는 집합의 쌍( V, E)으로 정의됩니다. 여기서 V는 임의의 셀 수 있는 집합의 부분 집합이고 E는 부분 집합( VхV)입니다.

아마도 수학적 추상화에 익숙하지 않은 사람들에게는 그러한 정의가 그다지 명확하지 않을 것이므로 더 간단하게 말해 보겠습니다.

그래프는 정점과 이를 연결하는 간선의 집합입니다. 추상의 영역에서 물질의 영역으로 즉시 이동하는 그래프의 좋은 예는 철로 지도입니다.

이러한 그래프의 정점은 스테이션 입니다 . 음, 그들 사이의 경로는 edge 입니다 .

그런 다음 인터페이스 구현을 정의합니다 java.util.Comparator.
class SortByCost implements Comparator<Edge> {
    public int compare(Edge a, Edge b) {
        if ( a.cost < b.cost ) return -1;
        else if ( a.cost == b.cost ) return 0;
        else return 1;
    }
}
이 예에서는 가중치를 기준으로 또는 정점 src (소스)에서 정점 dst (대상)까지 의 거리를 기준으로 그래프의 가장자리를 정렬합니다 . 마지막으로 표준 방법을 사용합니다 java.util.Arrays.sort ().
Arrays.sort(edges, new SortByCost())
이제 개체로 채워진 시트가 Edges오름차순(가장 작은 것부터 가장 큰 것까지)으로 정렬됩니다. 솔루션의 작성자는 Ethan Arrowood입니다.
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION