我在考虑这样的事情:
public static <T extends Comparable<T>> T minOf(T...ts){
SortedSet<T> set = new TreeSet<T>(Arrays.asList(ts));
return set.first();
}
public static <T extends Comparable<T>> T maxOf(T...ts){
SortedSet<T> set = new TreeSet<T>(Arrays.asList(ts));
return set.last();
}
Run Code Online (Sandbox Code Playgroud)
但是不安全,这也是我想要的.
你知道解决这个问题的更好方法吗?
编辑:
评论后我也试过min():
public static <T extends Comparable<T>> T minOf(T...ts){
return Collections.min(Arrays.asList(ts), new Comparator<T>(){
public int compare(T o1, T o2) {
if(o1!=null && o2!=null){
return o1.compareTo(o2);
}else if(o1!=null){
return 1;
}else{
return -1;
}
}});
}
Run Code Online (Sandbox Code Playgroud)
你对那个怎么想的?
我有两个不同的函数来尝试在ArrayList中找到最大的值.我有两个,因为我第一次看到他们是否会返回相同的值,然后是性能时间.
但是它们正在重现相同的值,但它似乎是ArrayList的最后一个值,无论它是否为最大值.我认为它可能是关键而不是价值.
代码如下,我认为这只是一个简单的错误,但任何人都可以指出我正确的方向吗?
double highest = fitnessArray.get(0);
for (int s = 0; s <fitnessArray.size(); s++){
if (fitnessArray.get(s)>highest)
highest=fitnessArray.get(s);
}
System.out.println("highest fitness = " + highest
+ " indoexOf = " + fitnessArray.indexOf(highest));
Run Code Online (Sandbox Code Playgroud)
double highestFitness;
highestFitness = Collections.max(fitnessArray);
System.out.println("lowest fitness 2 = " + highestFitness );
Run Code Online (Sandbox Code Playgroud) 我有这么简单的代码:
import java.util.ArrayList;
import java.util.List;
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Integer[] tab = {2324,1,2,2324,3,45,1,5,0,9,13,2324,1,3,9,8,4,2,1};
Integer max = 2324;
List<Integer> indexes = new ArrayList<Integer>();
for (int e = 0; e < tab.length; e++) {
if (tab[e] == max) {
indexes.add(new Integer(e));
System.out.println("Found max");
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这里的主要问题是我想在我tab的max值中找到每个索引.现在,它不起作用 - 它甚至没有显示发现最大消息一次,虽然它应该做3次.那问题呢?
好的,这终于奏效了,谢谢你们所有人:
public static void main(String[] args) {
Integer[] tab = {2324,1,2,2324,3,45,1,5,0,9,13,2324,1,3,9,8,4,2,1};
Integer max …Run Code Online (Sandbox Code Playgroud) 我按降序排序了我的arraylist,现在我要打印最大值.arraylist包含学生的姓名和成绩.我想打印成绩最高的学生的名字.我不需要打印他们的成绩.只是这个名字.这是我的代码
public void printStudent(){
Collections.sort(studentList);
Collections.reverse(studentList);
System.out.println("Best student is: ");
for (Student s: studentList){
System.out.println(s.toString());
}
}
Run Code Online (Sandbox Code Playgroud)
现在这打印了整个学生名单和他们的成绩但是我只想打印最高等级的学生的名字,我尝试了很多东西,但似乎无法让它工作.谢谢!