Heim  >  Artikel  >  Java  >  Sortierung linearer Java-Tabellen

Sortierung linearer Java-Tabellen

黄舟
黄舟Original
2017-02-22 10:01:451738Durchsuche

Sortieren linearer Tabellen in Java

Vorwort: Als ich gerade an JDBC arbeitete, hatte ich plötzlich das Gefühl, dass Order-By zu oft verwendet wurde und langweilig war. Mein sechster Sinn sagte mir, dass Java eine hat Möglichkeit, lineare Tabellen zu sortieren und dann auf „.“ zu klicken. Haha, es gibt eine solche statische Methode, public static 8742468051c85b06f0a0af9e3e506b5c list, Comparator117c5a0bdb71ea9a9d0c2b99b03abe3e

Änderungsdatensatz: Gemäß dem Vorschlag von @mythabc auf andere Weise hinzugefügt.


Methode 1: Komparator

Vorteile: Diese Methode ist beim Ausführen flexibler. Wenn Sie die Sortierregeln ändern möchten, wird der ursprüngliche Vergleich nicht geändert Wenn Sie den Komparator ändern und direkt einen anderen Komparator erstellen, ändern Sie einfach den neuen Klassennamen des Komparators. Wenn mehrere Komparatoren akkumuliert werden, können verschiedene Sortierregeln nach Belieben konvertiert werden ziemlich cool; die Trennung von Modell und Sortierung kommt dem Prinzip der Einzelverantwortung näher.

1. Definieren Sie zuerst ein Modell:

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. Definieren Sie dann einen Komparator und implementieren Sie Java. util.Comparator-Schnittstelle, Vergleichsregeln in der Methode Compare() schreiben:


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 sort(List list, Comparator c)-Methode in 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. Laufergebnis:


A 14
A 15
B 14


Methode 2: Implementieren Sie die Comparable-Schnittstelle
Vorteile: Hängen Sie sortierbare Attribute direkt an das Modell an, ohne eine neue Klasse definieren zu müssen (es ist nicht erforderlich, einen Komparator zu definieren), wodurch reduziert wird Die Anzahl der Kategorien erleichtert die Verwaltung und erleichtert die Lesbarkeit.

1. Definieren Sie zunächst ein Modell, implementieren Sie die Comparable-Schnittstelle und schreiben Sie Vergleichsregeln in die Methode „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 Sortieren Verwenden Sie die Methode sort(List list) in 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. Laufende Ergebnisse:

A 14
A 15
B 14

Das Obige ist der Inhalt der linearen Java-Tabellensortierung. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn).

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn