【发布时间】:2018-02-23 10:16:57
【问题描述】:
我有一个objects 列表,我想根据name 对其进行排序。我已经完成了编码,它确实根据name 进行了排序,但我的要求略有不同。
名称是我目前使用以下代码排序的示例:
Bull AMP
Cat DEF
Dog AMP
Frog STR
Zebra DEF
但我希望根据名称中的第二个单词对名称进行排序。基本上list 应该是这样的:
Bull AMP
Dog AMP
Cat DEF
Zebra DEF
Frog STR
下面是我的代码:
对象类:
public class AnimalData implements Serializable
{
private static final long serialVersionUID = 3952396152688462601L;
public String name;
public long age;
private String animal;
private String animalParts;
private String animalType;
}
比较器类
public class AnimalDataComparer implements Comparator<AnimalData>
{
@Override
public int compare(final AnimalData object1, final AnimalData object2)
{
return object1.getName().compareTo(object2.getName());
}
}
使用集合排序
private List<AnimalData> AnimalDataList;
Collections.sort(AnimalDataList, AnimalDataComparer);
【问题讨论】:
-
您的 equals 方法也需要表示该行为。
-
什么是 AMP、DEF 等字段??
-
或者这些后缀是字段字符串名称的一部分吗?
-
您可以使用
split()并比较名称的第二部分。 -
这真是糟糕的设计。如果可能,您应该为
name和category添加单独的字段。如果您需要这样的格式,请添加类似String foo() { return name + " " + category; }的方法
标签: java list sorting arraylist comparator