创建动态排序比较器
Create a dynamic sort comparator
我是一名 C# 开发人员,正在尝试 Java。我坚持创建一个动态比较器。下面是代码
public class SortImpl implements Sort {
public SortImpl() {
}
public ArrayList<Comparable> sort(ArrayList<Comparable> var1) {
Comparator var2 = new Comparator() {
};
var1.sort(var2);
return var1;
}
}
但是 Comparator 在创建 Comparator 对象时需要一个类型。我的 ArrayList 可以是任何类型,如 int、double、float。请让我知道我做错了什么。
如果您使用 java.util.Collections
对列表进行排序,您根本不需要实现 Comparator
:然后它将根据其元素的 natural ordering 进行排序:
public ArrayList<Comparable> sort(ArrayList<Comparable> var1) {
Collections.sort(var1);
return var1;
}
据我从您的代码片段中了解到,您试图创建排序实现,而不是比较器本身。
A Comparator<T>
是比较两个对象的对象。
来自 JavaDoc:
int compare(T o1, T o2)
Compares its two arguments for order.
Returns a negative integer, zero, or a positive integer as the first argument is less than, equal to, or greater than the second.
因为列表元素已经 Comparable
它们可以直接比较为 o1.compareTo(o2)
。
排序也应定义为public <T extends Comparable> List<T> sort(List<T> var1)
。
在Java中,您不必为这些类型(整数、浮点数、字符、字符串等...)实现比较器。当您定义一个列表时,您会说明它是什么类型:
List<Person> list = new ArrayList<Person>();
对列表进行排序时,可以使用Collections.sort(List list, Comparator comparator)方法。您可以像这样调用它:
Collections.sort(list, new Comparator<Person>() {
public int compare(Personobject1, Personobject2) {
return 0;//Put your code here
}
});
参数:
o1 - 要比较的第一个对象。
o2 - 要比较的第二个对象。
Returns:
负整数、零或正整数,因为第一个参数小于、等于或大于第二个参数。
有关详细信息,请参阅 https://docs.oracle.com/javase/7/docs/api/java/util/Comparator.html
我是一名 C# 开发人员,正在尝试 Java。我坚持创建一个动态比较器。下面是代码
public class SortImpl implements Sort {
public SortImpl() {
}
public ArrayList<Comparable> sort(ArrayList<Comparable> var1) {
Comparator var2 = new Comparator() {
};
var1.sort(var2);
return var1;
}
}
但是 Comparator 在创建 Comparator 对象时需要一个类型。我的 ArrayList 可以是任何类型,如 int、double、float。请让我知道我做错了什么。
如果您使用 java.util.Collections
对列表进行排序,您根本不需要实现 Comparator
:然后它将根据其元素的 natural ordering 进行排序:
public ArrayList<Comparable> sort(ArrayList<Comparable> var1) {
Collections.sort(var1);
return var1;
}
据我从您的代码片段中了解到,您试图创建排序实现,而不是比较器本身。
A Comparator<T>
是比较两个对象的对象。
来自 JavaDoc:
int compare(T o1, T o2)
Compares its two arguments for order.
Returns a negative integer, zero, or a positive integer as the first argument is less than, equal to, or greater than the second.
因为列表元素已经 Comparable
它们可以直接比较为 o1.compareTo(o2)
。
排序也应定义为public <T extends Comparable> List<T> sort(List<T> var1)
。
在Java中,您不必为这些类型(整数、浮点数、字符、字符串等...)实现比较器。当您定义一个列表时,您会说明它是什么类型:
List<Person> list = new ArrayList<Person>();
对列表进行排序时,可以使用Collections.sort(List list, Comparator comparator)方法。您可以像这样调用它:
Collections.sort(list, new Comparator<Person>() {
public int compare(Personobject1, Personobject2) {
return 0;//Put your code here
}
});
参数: o1 - 要比较的第一个对象。 o2 - 要比较的第二个对象。 Returns: 负整数、零或正整数,因为第一个参数小于、等于或大于第二个参数。
有关详细信息,请参阅 https://docs.oracle.com/javase/7/docs/api/java/util/Comparator.html