语言:Java
如何使用方法.getType()对ArrayList的内容进行排序,然后使用getName()按字母顺序排序?
这是不同的,因为我从一个已按字母顺序排列的列表开始,并希望按类型排序。
列表示例:
0: Type=Grass Name=GrassNameExampleHere
1: Type=Stone Name=StoneSomethingElse
2: Type=Stone Name=StoneWhatever
3: Type=Grass Name=StoneWhatever
列表应该成为:
0: Type=Grass Name=GrassNameExampleHere
1: Type=Grass Name=StoneWhatever
2: Type=Stone Name=StoneSomethingElse
3: Type=Stone Name=StoneWhatever
感谢任何帮助!
感谢。
答案 0 :(得分:-1)
public class Item {
private String name;
private Type type;
public Item() {
}
public Item(String name, Type type) {
this.name = name;
this.type = type;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Type getType() {
return type;
}
public void setType(Type type) {
this.type = type;
}
@Override
public String toString() {
return "Item{" +
"name='" + name + '\'' +
", type=" + type +
'}';
}
}
public enum Type {
STONE,
GRASS
}
public class ItemComparator implements Comparator<Item> {
@Override
public int compare(Item o1, Item o2) {
String name1 = o1.getName();
String name2 = o2.getName();
Type type1 = o1.getType();
Type type2 = o2.getType();
int i = type1.name().compareTo(type2.name());
if (i != 0) return i;
i = name1.compareTo(name2);
return i;
}
}
public class Main {
public static void main(String[] args) {
Item item0 = new Item("StoneWhatever", Type.STONE);
Item item1 = new Item("StoneSomethingElse", Type.STONE);
Item item2 = new Item("StoneWhatever", Type.GRASS);
Item item3 = new Item("GrassNameExampleHere", Type.GRASS);
List<Item> itemList = new ArrayList<>();
itemList.add(item0);
itemList.add(item1);
itemList.add(item2);
itemList.add(item3);
Collections.sort(itemList, new ItemComparator());
for (Item item : itemList) {
System.out.println(item);
}
}
}