java - 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 中的 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());
推荐阅读
- swift - 在 Swift UI 中,表达式解析为未使用的函数。无法弄清楚问题是什么
- swift - 如何正确创建 SF 符号?
- css - 如何使用微小的png作为react native的覆盖来填充屏幕
- python - 子进程如何处理文件指针?
- html - 如何在所有打开和关闭的 HTML 中设置块?
- reactjs - 我如何通过双击构建的 index.html 来运行我的 reactjs 应用程序
- angular - 异步验证器未在 FormControl 中设置返回的错误
- javascript - 如何在 Javascript 中显示 Open Weather Map 中的天气图标
- html - 使 Flex-container(在另一个 Flex-container 中)响应
- gradle - InteliJ IDEA 的 Basic Gluon Mobile 插件项目无法从 IDE 运行