我定义了一个arraylist,其元素是[man, animal, bird, reptile]
。 arraylist中的元素是非强制性的。该列表甚至可以为空。
我总是需要将输出设为[animal,man,reptile,bird]
。意味着要保持元素的顺序。在arraylist中有什么办法吗?
我以为我可以这样做
for (String listElement: customList) { //custom list variable holds all elements
if (listElement.equalsIgnoreCase("animal"){
newList.add(0, listElement);
} else if("man") {
newlist.add(1, listElement);
}
但我想知道做的最佳做法。有人可以帮我这个吗?
答案 0 :(得分:2)
您可以定义自定义排序并使用它来排序数组(将比较器保存在某处,因此您不必多次实例化它):
List<String> definedOrder = // define your custom order
Arrays.asList("animal", "man", "reptile", "bird");
Comparator<String> comparator = new Comparator<String>(){
@Override
public int compare(final String o1, final String o2){
// let your comparator look up your car's color in the custom order
return Integer.valueOf(definedOrder.indexOf(o1))
.compareTo(Integer.valueOf(definedOrder.indexOf(o2)));
}
};
Collections.sort(myList, comparator);
答案 1 :(得分:1)
使用自定义比较器:
Collections.sort(customList, comparator);
int i = 0;
for (String temp : customList) {
System.out.println("customList " + ++i + " : " + temp);
}
下面的自定义比较器:
public static Comparator<String> comparator = new Comparator<String>() {
public int compare(String str1, String str2) {
return orderOf(str1) - orderOf(str2);
}
private int orderOf(String name) {
return ((List)Arrays.asList("animal", "man", "reptile", "bird")).indexOf(name);
}
};
答案 2 :(得分:0)
您可以使用Collections.sort(yourArrayList, new CustomComparator());
你需要为此创建自己的比较器,但这很容易。
public class CustomComparator implements Comparator<YourType>{
@Override
public int compare(YoyrType o1, YoyrType o2) {
// logic for ordering the list
}
}
答案 3 :(得分:0)