Pengurutan bisa jadi rumit, terutama jika daftar Anda
Kemudian kita mendefinisikan implementasi antarmuka
List
berisi pembungkus objek ( Byte
, Integer
, Short
, Long
, Double
, Float
) dan bukan tipe data numerik primitif. Saya menyarankan menggunakan metode yang bisa sangat berguna untuk memecahkan masalah sederhana atau menjawab pertanyaan pewawancara. Pertama, mari kita pilih apa yang akan kita isi List
. Dalam contoh ini saya akan menggunakan daftar tepi grafik ( Edges
) dari struktur data sederhana 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();
Apa itu grafik? Dalam matematika diskrit, graf didefinisikan sebagai sepasang himpunan ( Mungkin bagi yang belum terbiasa dengan abstraksi matematika, definisi seperti itu tidak akan terlalu jelas, jadi katakanlah lebih sederhana: Graf adalah kumpulan simpul dan sisi yang menghubungkannya. Contoh grafik yang baik yang akan langsung membawanya dari ranah abstraksi ke ranah material adalah peta rel kereta api. Simpul dari graf tersebut adalah stasiun . Ya, jalur di antara mereka adalah tepian . |
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;
}
}
Pada contoh ini, kita akan mengurutkan sisi-sisi grafik berdasarkan bobotnya, atau berdasarkan jarak dari titik src (sumber) ke titik dst (tujuan). Terakhir, kami menggunakan metode standar java.util.Arrays.sort ()
:
Arrays.sort(edges, new SortByCost())
Sekarang sheet kita yang berisi objek Edges
diurutkan dalam urutan menaik (dari terkecil ke terbesar). Penulis solusinya adalah Ethan Arrowood.
GO TO FULL VERSION