void sort(List<"/> void sort(List<">

Maison  >  Article  >  Java  >  Tri de table linéaire Java

Tri de table linéaire Java

黄舟
黄舟original
2017-02-22 10:01:451738parcourir

Tri des tableaux linéaires en Java

Préface : Alors que je travaillais sur JDBC tout à l'heure, j'ai soudain senti que le tri était trop utilisé et ennuyeux. Mon sixième sens m'a dit que Java avait un. façon de trier les tableaux linéaires, puis cliquez sur "." dans Eclipse, il existe une telle méthode statique public static 8742468051c85b06f0a0af9e3e506b5c void sort(List8742468051c85b06f0a0af9e3e506b5c list, Comparator117c5a0bdb71ea9a9d0c2b99b03abe3e c).

Enregistrement de modification : Ajout d'une autre méthode selon la suggestion de @mythabc.


Méthode 1 : Comparateur

Avantages : Cette méthode est plus flexible lors de l'exécution. Si vous souhaitez modifier les règles de tri, la comparaison d'origine ne le sera pas. modifié. Comparator, et créez directement un autre comparateur, changez simplement le nouveau nom de classe du comparateur sur le client. Ceci est plus proche du principe d'ouverture et de fermeture. Lorsque plusieurs comparateurs sont accumulés, diverses règles de tri peuvent être converties à volonté, ce qui est le cas. plutôt cool ; la séparation du modèle et du tri est plus proche du principe de responsabilité unique.

1. Définissez d'abord un modèle :

package model;

/**
 * User.java
 * 
 * @author 梁WP 2014年3月3日
 */
public class User
{
    private String userName;
    private int userAge;
    
    public User()
    {
    }
    
    public User(String userName, int userAge)
    {
        this.userName = userName;
        this.userAge = userAge;
    }

    public String getUserName()
    {
        return userName;
    }

    public void setUserName(String userName)
    {
        this.userName = userName;
    }

    public int getUserAge()
    {
        return userAge;
    }

    public void setUserAge(int userAge)
    {
        this.userAge = userAge;
    }
}





2. util.Comparator, écrivez des règles de comparaison dans la méthode compare() :

package util;

import java.util.Comparator;

import model.User;

/**
 * ComparatorUser.java
 * 
 * @author 梁WP 2014年3月3日
 */
public class ComparatorUser implements Comparator<User>
{
    @Override
    public int compare(User arg0, User arg1)
    {
        // 先比较名字
        int flag = arg0.getUserName().compareTo(arg1.getUserName());

        // 如果名字一样,就比较年龄
        if (flag == 0)
        {
            return arg0.getUserAge() - arg1.getUserAge();
        }
        return flag;
    }
}





3. Utilisez Java lors du tri. méthode sort(List list, Comparator c) dans util.Collections :

package test;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import util.ComparatorUser;
import model.User;

/**
 * TestApp.java
 * 
 * @author 梁WP 2014年3月3日
 */
public class TestApp
{
    public static void main(String[] arg0)
    {
        List<User> userList = new ArrayList<User>();

        // 插入数据
        userList.add(new User("A", 15));
        userList.add(new User("B", 14));
        userList.add(new User("A", 14));

        // 排序
        Collections.sort(userList, new ComparatorUser());

        // 打印结果
        for (User u : userList)
        {
            System.out.println(u.getUserName() + " " + u.getUserAge());
        }
    }
}


4. Résultat d'exécution :

A 14
A 15
B 14


Méthode 2 : Implémenter l'interface Comparable

Avantages : Attachez directement des attributs triables au modèle sans avoir à définir une nouvelle classe (pas besoin de définir un comparateur), réduisant ainsi le nombre de catégories facilite la gestion et la lecture.

1. Définissez d'abord un modèle, implémentez l'interface Comparable et écrivez des règles de comparaison dans la méthode compareTo() :

package model;

/**
 * Student.java
 * 
 * @author 梁WP 2014年3月4日
 */
public class Student implements Comparable<Student>
{
    private String studentName;
    private int studentAge;

    public Student()
    {
    }
    
    public Student(String studentName, int studentAge)
    {
        this.studentName = studentName;
        this.studentAge = studentAge;
    }

    public String getStudentName()
    {
        return studentName;
    }

    public void setStudentName(String studentName)
    {
        this.studentName = studentName;
    }

    public int getStudentAge()
    {
        return studentAge;
    }

    public void setStudentAge(int studentAge)
    {
        this.studentAge = studentAge;
    }

    @Override
    public int compareTo(Student o)
    {
        // 先比较名字
        int flag = this.getStudentName().compareTo(o.getStudentName());

        // 如果名字一样,就比较年龄
        if (flag == 0)
        {
            return this.getStudentAge() - o.getStudentAge();
        }
        return flag;
    }
}


2. tri Utilisez la méthode sort(List list) dans java.util.Collections :

package test;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import model.Student;

/**
 * TestApp.java
 * 
 * @author 梁WP 2014年3月4日
 */
public class TestApp2
{
    public static void main(String[] arg0)
    {
        List<Student> studentList = new ArrayList<Student>();

        // 插入数据
        studentList.add(new Student("A", 15));
        studentList.add(new Student("B", 14));
        studentList.add(new Student("A", 14));

        // 排序
        Collections.sort(studentList);

        // 打印结果
        for (Student s : studentList)
        {
            System.out.println(s.getStudentName() + " " + s.getStudentAge());
        }
    }
}


3. Résultats en cours d'exécution :

A 14
A 15
B 14

Ce qui précède est le contenu du tri des tableaux linéaires Java. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn