JavaRush /Blogue Java /Random-PT /Usando Java Arrays.sort() em qualquer lista de objetos

Usando Java Arrays.sort() em qualquer lista de objetos

Publicado no grupo Random-PT
A classificação pode ser complicada, especialmente se sua lista Listcontiver wrappers de objetos ( Byte, Integer, Short, Long, Double, Float) em vez de tipos de dados numéricos primitivos. Sugiro usar um método que pode ser muito útil para resolver problemas simples ou responder a perguntas de um entrevistador. Usando Java Arrays.sort() em qualquer lista de objetos - 1Primeiro, vamos escolher o que preencheremos em nosso arquivo List. Neste exemplo usarei uma lista de arestas de gráfico ( Edges) de uma estrutura de dados simples 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();

O que é um gráfico?

Na matemática discreta, um gráfico é definido como um par de conjuntos ( V, E), onde Vé um subconjunto de um conjunto contável arbitrário e Eé um subconjunto ( VхV).

Provavelmente, para quem não está acostumado com abstrações matemáticas, tal definição não será muito clara, então digamos de forma mais simples:

Um gráfico é uma coleção de vértices e arestas que os conectam. Um bom exemplo de gráfico que o levará imediatamente do domínio da abstração para o domínio do material é um mapa de trilhos de trem.

Os vértices de tal gráfico são estações . Bem, os caminhos entre eles são arestas .

Então definimos a implementação da 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;
    }
}
Neste exemplo, classificaremos as arestas do gráfico por seu peso ou pela distância do vértice src (fonte) ao vértice dst (destino). Finalmente, usamos o método padrão java.util.Arrays.sort ():
Arrays.sort(edges, new SortByCost())
Agora nossa planilha preenchida com objetos Edgesestá classificada em ordem crescente (do menor para o maior). O autor da solução é Ethan Arrowood.
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION