我想以排序的形式呈现我的列表。我知道一种方法是使用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);
}
}
答案 0 :(得分:2)
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());
}
});
这两个选项都会按照他们的名字(或您选择的任何属性)对动物进行排序。