Java里有没有类似于.net里linq的货色
Java里有没有类似于.net里linq的东西?
比如有一个Student类型数组:Student[] students
C#里根据年龄对数组元素排序可以这么写:students.OrderBy(x=>x.Age);
Java里怎么写?
------解决思路----------------------
实现一个Comparator接口就可以实现你说的那样的排序了。
类:java.util.Arrays
sort
public static <T> void sort(T[] a,
Comparator<? super T> c)
根据指定比较器产生的顺序对指定对象数组进行排序。数组中的所有元素都必须是通过指定比较器 可相互比较的(也就是说,对于数组中的任何 e1 和 e2 元素而言, c.compare(e1, e2) 不得抛出 ClassCastException)。
保证此排序是稳定的:不会因调用 sort 方法而对相等的元素进行重新排序。
该排序算法是一个经过修改的合并排序算法(其中,如果低子列表中的最高元素小于高子列表中的最低元素,则忽略合并)。此算法提供可保证的 n*log(n) 性能。
参数:
a - 要排序的数组
c - 确定数组顺序的比较器。 null 值指示应该使用元素的 自然顺序。
抛出:
ClassCastException - 如果数组包含使用指定的比较器不 可相互比较的 的元素。
------解决思路----------------------
也可以将待排序的数据类实现Comparable接口,这个接口需要覆写一个方法compareTo,表示自己和参数比较的结果,小于0就是自己小,大于0就是自己大。实现了这个接口的类实例都可以通过Arrays.sort或者Collections.sort进行排序。
------解决思路----------------------
java8可以满足你的需求
Arrays.sort(students, (a, b) -> Integer.compare(a.age, b.age));
比如有一个Student类型数组:Student[] students
C#里根据年龄对数组元素排序可以这么写:students.OrderBy(x=>x.Age);
Java里怎么写?
------解决思路----------------------
实现一个Comparator接口就可以实现你说的那样的排序了。
类:java.util.Arrays
sort
public static <T> void sort(T[] a,
Comparator<? super T> c)
根据指定比较器产生的顺序对指定对象数组进行排序。数组中的所有元素都必须是通过指定比较器 可相互比较的(也就是说,对于数组中的任何 e1 和 e2 元素而言, c.compare(e1, e2) 不得抛出 ClassCastException)。
保证此排序是稳定的:不会因调用 sort 方法而对相等的元素进行重新排序。
该排序算法是一个经过修改的合并排序算法(其中,如果低子列表中的最高元素小于高子列表中的最低元素,则忽略合并)。此算法提供可保证的 n*log(n) 性能。
参数:
a - 要排序的数组
c - 确定数组顺序的比较器。 null 值指示应该使用元素的 自然顺序。
抛出:
ClassCastException - 如果数组包含使用指定的比较器不 可相互比较的 的元素。
------解决思路----------------------
也可以将待排序的数据类实现Comparable接口,这个接口需要覆写一个方法compareTo,表示自己和参数比较的结果,小于0就是自己小,大于0就是自己大。实现了这个接口的类实例都可以通过Arrays.sort或者Collections.sort进行排序。
------解决思路----------------------
java8可以满足你的需求
Arrays.sort(students, (a, b) -> Integer.compare(a.age, b.age));