Java 在arraylist中对不同类型的对象进行排序?
我有一个Java 在arraylist中对不同类型的对象进行排序?,java,Java,我有一个ArrayList有String,int,long,date类型对象等。 我想对这些对象进行排序 有人能帮我吗?你可以用 list.sort(); 不管是哪种类型 如果您有一个自定义类,并且需要一个特定的排序顺序,那么您可以这样做 class MyClass implements Comparator<MyClass> { public int compareTo(MyClass other) { // write your comparison h
ArrayList
有String
,int
,long
,date
类型对象等。
我想对这些对象进行排序
有人能帮我吗?你可以用
list.sort();
不管是哪种类型
如果您有一个自定义类,并且需要一个特定的排序顺序,那么您可以这样做
class MyClass implements Comparator<MyClass> {
public int compareTo(MyClass other) {
// write your comparison here
}
}
您可以使用
java.util.collections.sort()方法对List
集合进行排序
您可以对这两种类型的列表进行排序
ArrayList
LinkedList
如果您有一个包含不同类型对象的数组列表,例如字符串
,整数
,长
,等等。
您可以使用特定的比较器对该ArrayList
进行排序,该比较器将首先使用它们的类名,然后对每个对象族使用比较方法。所有类都必须实现Compariable
接口-这是String、Integer、Long、Date、Float、Double的情况
public List<Object> sortMultiClassList(List<Object> yourList) {
return Collections.sort(yourList, new Comparator<Object>() {
public int compare(Object o1, Object o2) {
if (o1.getClass() == o2.getClass()) {
if (o1 instanceof Comparable) {
return((Comparable)o1).compareTo((Comparable)o2);
}
else {
throw new IllegalArgumentException("Don't know how to compare");
}
}
else {
return o1.getClass().getName()
.compareTo(o2.getClass().getName());
}
}
});
}
公共列表排序多类列表(列出您的列表){
return Collections.sort(yourList,newcomparator(){
公共整数比较(对象o1、对象o2){
如果(o1.getClass()==o2.getClass()){
if(o1实例可比){
回报率((可比)o1)。与((可比)o2)相比;
}
否则{
抛出新的IllegalArgumentException(“不知道如何比较”);
}
}
否则{
返回o1.getClass().getName()
.compareTo(o2.getClass().getName());
}
}
});
}
注意:java.util.Collection
不能包含诸如int
、long
、float
、double
、char
之类的基元类型 如果你告诉我们你希望它们如何排序。首先,数字,日期,然后字符串对象……清楚地表达你的想法。我们无法推测你想做什么。
public List<Object> sortMultiClassList(List<Object> yourList) {
return Collections.sort(yourList, new Comparator<Object>() {
public int compare(Object o1, Object o2) {
if (o1.getClass() == o2.getClass()) {
if (o1 instanceof Comparable) {
return((Comparable)o1).compareTo((Comparable)o2);
}
else {
throw new IllegalArgumentException("Don't know how to compare");
}
}
else {
return o1.getClass().getName()
.compareTo(o2.getClass().getName());
}
}
});
}