首页 > 解决方案 > Java - 按对象中的特定值对对象的 ArrayList 进行排序

问题描述

您好,我有无法解决的问题。我想按值对 java 中的 Obj 列表进行排序,在这个例子中是 String。我知道如何在 C# 中做到这一点,但我不能在 Java 中。我尝试了“collection.sort”和“compareTo”,但我做错了。

缺少代码在案例 3 中

 public static void main(String[] args)
    {
        ArrayList<Animal> animals = new ArrayList<Animal>(); // deklaracja listy obiektów

        boolean exit = false; // zapętlenie menu
        while (!exit)
        {


            System.out.println("**MENU**\nWcisnij: \n1.Dodaj zwierze.\n2.Pokarz liste zwierzat. \n3.Posortuj liste po wieku\n4.Exit ");
            int menu = Integer.parseInt(new Scanner(System.in).nextLine());

            switch (menu)
            {
                case 1:

                        System.out.println("**POD MENU**\nWcisnij: \n1.Ssak \n2.Gad \n3.Ptak\n");
                        int subMenu = Integer.parseInt(new Scanner(System.in).nextLine()); // pod menu
                        {
                        if (subMenu == 1) // tworzenie obiektu ssak
                        {
                            Mammal mammal = new Mammal();
                            mammal.CreateMammal();
                            animals.add(mammal);
                        }
                ***

                case 3:
                // compare and sort objects in list by name and print ??
                // in C# i do sth like this but i dont know hot to bite this in java
                /*
                    var orderedAnimals = animals.OrderBy(x -> x.name); // algorytm sortowania
                                        for (var animal : orderedAnimals)
                                        {
                                            System.out.println(animal.toString());
                                        }

                */

标签: java

解决方案


为此,您可以使用 Java 中的 Comparator Facility。

像这样创建一个子类

class SortByName implements Comparator<Animals> { 
    // Used for sorting in ascending order of  name 
    public int compare(Animals a, Animals b) { 
        return a.name.compareTo(b.name); 
    } 
}

在主类中调用子类

Collections.sort(animals, new SortByName());

推荐阅读