JavaRush /Java Blog /Random-TL /Paggamit ng Java Arrays.sort() sa anumang listahan ng mga...

Paggamit ng Java Arrays.sort() sa anumang listahan ng mga bagay

Nai-publish sa grupo
Maaaring nakakalito ang pag-uuri, lalo na kung ang iyong listahan Listay naglalaman ng mga object wrapper ( Byte, Integer, Short, Long, Double, Float) kaysa sa mga primitive na numeric na uri ng data. Iminumungkahi ko ang paggamit ng isang paraan na maaaring maging lubhang kapaki-pakinabang para sa paglutas ng mga simpleng problema o pagsagot sa tanong ng isang tagapanayam. Paggamit ng Java Arrays.sort() sa anumang listahan ng mga bagay - 1Una, piliin natin kung ano ang pupunuin natin sa ating List. Sa halimbawang ito gagamit ako ng isang listahan ng mga gilid ng graph ( Edges) mula sa isang simpleng istraktura ng data 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();

Ano ang isang graph?

Sa discrete mathematics, ang isang graph ay tinukoy bilang isang pares ng mga set ( V, E), kung saan Vay isang subset ng isang arbitrary countable set, at Eisang subset ( VхV).

Marahil, para sa mga hindi sanay sa mga abstraction ng matematika, ang gayong kahulugan ay hindi magiging napakalinaw, kaya't sabihin natin ito nang mas simple:

Ang graph ay isang koleksyon ng mga vertex at mga gilid na nag-uugnay sa kanila. Ang isang magandang halimbawa ng isang graph na agad na magdadala nito mula sa larangan ng abstraction patungo sa larangan ng materyal ay isang mapa ng mga riles ng tren.

Ang mga vertex ng naturang graph ay mga istasyon . Well, ang mga landas sa pagitan nila ay mga gilid .

Pagkatapos ay tinukoy namin ang pagpapatupad ng interface 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;
    }
}
Sa halimbawang ito, pag-uuri-uriin natin ang mga gilid ng graph ayon sa kanilang timbang, o ayon sa distansya mula sa vertex src (pinagmulan) hanggang sa vertex dst (destinasyon). Sa wakas, ginagamit namin ang karaniwang pamamaraan java.util.Arrays.sort ():
Arrays.sort(edges, new SortByCost())
Ngayon ang aming sheet na puno ng mga bagay Edgesay pinagsunod-sunod sa pataas na pagkakasunud-sunod (mula sa pinakamaliit hanggang sa pinakamalaki). Ang may-akda ng solusyon ay si Ethan Arrowood.
Mga komento
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION