Сұрыптау қиын болуы мүмкін, әсіресе тізімде қарабайыр сандық деректер түрлерінен гөрі
Содан кейін интерфейстің орындалуын анықтаймыз
List
нысан орауыштары ( Byte
, Integer
, Short
, Long
, Double
, ) болса. Float
Мен қарапайым мәселелерді шешу немесе сұхбат берушінің сұрағына жауап беру үшін өте пайдалы әдісті пайдалануды ұсынамын. Алдымен, біз толтыратын нәрсені таңдайық 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();
График дегеніміз не? Дискретті математикада граф жиындар жұбы ( Математикалық абстракцияларға дағдыланбағандар үшін мұндай анықтама онша түсінікті болмайтын шығар, сондықтан қарапайымырақ айтайық: График – бұл төбелер мен оларды қосатын жиектер жиынтығы. Оны абстракциялық саладан материал саласына бірден апаратын графтың жақсы мысалы - теміржол жолдарының картасы. Мұндай графиктің шыңдары станциялар болып табылады . Олардың арасындағы жолдар жиектер болып табылады . |
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
өсу ретімен (кішіден үлкенге қарай) сұрыпталған. Шешімнің авторы - Этан Арровуд.
GO TO FULL VERSION