Fundamentos de Java - Colecciones Marco --set - rango TreeSet

Un concepto tipo :.
colección TreeSet tiene que subyace algoritmo de árbol rojo-negro, utilizará los elementos de almacenamiento por defecto ordenamiento natural (pequeño a grande).
Nota: Debe asegurarse de elementos TreeSet del objeto de la colección es el mismo tipo de datos, de lo contrario un error.

Dos ordenamiento natural:
ordenación natural ( de pequeño a grande ):
TreeSet llamada compareTo Elementos determinados método para comparar la relación tamaño de los elementos, entonces habla del conjunto de elementos en orden ascendente (de pequeño a grande).
Nota: Requiere elementos TreeSet en el conjunto han implementado en Java interfaces de .util.Comparable.
Aquí Insertar imagen Descripción
java.util.Comparable Interfaz: comparables
. cobertura pública int compareTo (Object o) método, reglas de comparación escritas en este método
en este método, la comparación del objeto actual (este) y el parámetro objeto O comparar (estrictamente hablando es la comparación de objeto de datos, tales como la edad ordenada por objeto).
el este> O: devuelve un entero positivo 1..
el este <O: entero negativo -1.
The esta == O: esto devuelve 0 cuando dos objetos son considerados como el mismo objeto.
en el orden natural de la TreeSet que si dos objetos que se comparan devuelve el método compareTo se considera cero a ser el mismo objeto.

class Person implements Comparable<Person>{
    private String name;
    private Integer age;

    public Person(String name, Integer age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    @Override
    public int compareTo(Person o) {
        if(this.age>o.age){
            return 1;
        }else if(this.age<o.age){
            return -1;
        }
        return 0;
    }
}
public class TreeSetDemo {
    public static void main(String[] args) {
        TreeSet<Person> set = new TreeSet<>();
        set.add(new Person("赵一",20));
        set.add(new Person("钱二",30));
        set.add(new Person("孙三",10));
        set.add(new Person("李四",15));
        System.out.println(set);
        //[Person{name='孙三', age=10}, Person{name='李四', age=15}, Person{name='赵一', age=20}, Person{name='钱二', age=30}]
    }
}

Tres Organización personalizada:
pasar java.lang.Comparator TreeSet constructor de objetos y cubierto public int (o1 de objetos, objetos comparar o2) y reglas de comparación a continuación, escribir.
Aquí Insertar imagen Descripción

class Person {
     String name;
     Integer age;

    public Person(String name, Integer age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
public class TreeSetDemo1 {
    public static void main(String[] args) {
        TreeSet<Person> set = new TreeSet<>(new NameComparator());
        set.add(new Person("陈伊伊",20));
        set.add(new Person("钱二",30));
        set.add(new Person("孙三三",10));
        set.add(new Person("李四四四",15));
        System.out.println(set);
        //[Person{name='李四四四', age=15}, Person{name='孙三三', age=10}, Person{name='陈伊伊', age=20}, Person{name='钱二', age=30}]
    }
}
class NameComparator implements Comparator<Person>{
    @Override
    public int compare(Person o1, Person o2) {
        //先按照名字字数的长短来比较
        if(o1.name.length()>o2.name.length()){
            return -1;
        }else if(o1.name.length()<o2.name.length()){
            return 1;
            //如果名字长短一样,再按照年龄来自然排序
        }else if(o1.age>o2.age){
            return 1;
        }else if(o1.age<o2.age){
            return -1;
        }
        return 0;
    }
}

Para la recogida de TreeSet, el uso de cualquiera de ordenamiento natural, o utilizar un orden personalizado.
Determina si dos objetos son iguales reglas:
ordenamiento natural: el método compareTo devuelve 0;
personalizada Organización: devuelve el método comparar 0;

Publicado 99 artículos originales · ganado elogios 2 · Vistas 2604

Supongo que te gusta

Origin blog.csdn.net/weixin_41588751/article/details/105309851
Recomendado
Clasificación