英文:
Find max value from generic arraylist
问题
我想编写一个方法来找到 ArrayList 的最大值。它可以是整数或双精度类型。
我认为下面的代码对于数组有效,但对于 ArrayList 就不行?
public static <T extends Comparable<T>> T maxValue(ArrayList<T> arrayList){
T max = arrayList.get(0);
for(T data: arrayList){
if(data.compareTo(max) > 0)
max = data;
}
return max;
}
英文:
I want to write a method to find the max value of arraylist. It could be integer or double type.
I believe the below code works for arrays, but not for arraylist?
public static <T extends Comparable<T>> T maxValue(T[] array){
T max = array[0];
for(T data: array){
if(data.compareTo(max)>0)
max =data;
}
return max;
}
答案1
得分: 4
首先,应该是 Comparable<? super T>
。其次,参数应该是 Collection<T>
(或者 List<T>
),而不是数组。最后,已经存在 Collections.max(Collection<? extends T>)
方法,您可以使用它来实现这个方法。就像这样:
public static <T extends Comparable<? super T>> T maxValue(Collection<T> c) {
return Collections.max(c);
}
英文:
First, it should be Comparable<? super T>
. Second, the argument needs to be a Collection<T>
(or List<T>
) instead of an array. Finally, there is the existing Collections.max(Collection<? extends T>)
that you can use to implement the method. Like,
public static <T extends Comparable<? super T>> T maxValue(Collection<T> c) {
return Collections.max(c);
}
答案2
得分: 2
public static void main(String[] args) {
System.out.println(maxValue(Arrays.asList(1, 3, 6, 2, 4, 5)));
System.out.println(maxValue(Arrays.asList(1.7D, 3.2D, 2.5D, 2.1D, 0.05D, 1.84D)));
}
public static <T extends Comparable<T>> T maxValue(List<T> array){
T max = array.get(0);
for(T data: array){
if(data.compareTo(max) > 0)
max = data;
}
return max;
}
同时,如果你将参数类型从 T[]
修改为 List<T>
,你的代码也可以适用于 ArrayList。
英文:
public static void main(String[] args) {
System.out.println(Collections.max(Arrays.asList(1, 3, 6, 2, 4, 5)));
System.out.println(Collections.max(Arrays.asList(1.7D, 3.2D, 2.5D, 2.1D, 0.05D, 1.84D)));
}
How about this?
public static void main(String[] args) {
System.out.println(maxValue(Arrays.asList(1, 3, 6, 2, 4, 5)));
System.out.println(maxValue(Arrays.asList(1.7D, 3.2D, 2.5D, 2.1D, 0.05D, 1.84D)));
}
public static <T extends Comparable<T>> T maxValue(List<T> array){
T max = array.get(0);
for(T data: array){
if(data.compareTo(max)>0)
max =data;
}
return max;
}
Also, your code works for arraylist if you change parameter type from T[] to List<T>
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论