我想以排序的形式呈现我的列表。我知道一种方法是使用 Collections 类并调用 sort 方法。我尝试过,但它不适用于以我的自定义类作为对象的 ArrayList
。
我尝试使用此方法:
Collections.sort(nameOfAmimals);
这是我的代码:
package com.example.hp.learning;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ListView;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
public class A_Animals extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_a__animals);
ArrayList <Animal> nameOfAmimals = new ArrayList<>();
nameOfAmimals.add(new Animal("Cat" , ""));
nameOfAmimals.add(new Animal("Dog" , ""));
nameOfAmimals.add(new Animal("Bird" , ""));
nameOfAmimals.add(new Animal("Lion" , ""));
nameOfAmimals.add(new Animal("Squirrel" , ""));
nameOfAmimals.add(new Animal("Gray Wolf" , ""));
nameOfAmimals.add(new Animal("Snake" , ""));
nameOfAmimals.add(new Animal("Beer" , ""));
nameOfAmimals.add(new Animal("Deer" , ""));
nameOfAmimals.add(new Animal("Donkey" , ""));
nameOfAmimals.add(new Animal("Rhinoceros" , ""));
nameOfAmimals.add(new Animal("Raccoon" , ""));
nameOfAmimals.add(new Animal("Rabbit" , ""));
nameOfAmimals.add(new Animal("Kangaroo" , ""));
nameOfAmimals.add(new Animal("Koala" , ""));
nameOfAmimals.add(new Animal("Octopus" , ""));
nameOfAmimals.add(new Animal("Parrot" , ""));
nameOfAmimals.add(new Animal("Swan" , ""));
nameOfAmimals.add(new Animal("Yak" , ""));
nameOfAmimals.add(new Animal("Zebra" , ""));
AnimalArrayAdapter animalArrayAdapter = new AnimalArrayAdapter(A_Animals.this , nameOfAmimals);
ListView listView = (ListView) findViewById(R.id.list_view_animals);
listView.setAdapter(animalArrayAdapter);
}
}
最佳答案
Java 根本不知道如何对自定义类进行排序。
您有两个选择:
让您的
Animal
类工具Comparable<Animal>
并添加compareTo
方法:class Animal implements Comparable<Animal> { String name; public Animal(String name) { this.name = name; } public String getName() { return this.name; } @Override public int compareTo(Animal o) { return this.name.compareTo(o.name); } }
提供自定义
Comparator
到Collections#sort
方法:Collections.sort(animals, Comparator.comparing(Animal::getName));
或者老式的 Java 7 方式:
Collections.sort(animals, new Comparator<Animal>() { @Override public int compare(Animal o1, Animal o2) { return o1.getName().compareTo(o2.getName()); } });
这两个选项都会按动物的名称(或您选择的任何属性)对动物进行排序。
关于java - 集合排序不适用于自定义 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45777260/