Java 求3的两个最大数之和

Java 求3的两个最大数之和,java,compare,Java,Compare,在Java中,如果不使用if条件,如何找到一组3个数中最大的两个数 例如,给定3个数{2,3,5} int a = 2; int b = 3; int c = 5; int total; 总计将替换为c+b=8的值; List<Integer> data = Arrays.asList(23,6,13); Collections.sort(data); Collections.reverse(data) data = data.sublist(0,2); System.out.p

在Java中,如果不使用if条件,如何找到一组3个数中最大的两个数

例如,给定3个数{2,3,5}

int a = 2;
int b = 3;
int c = 5;

int total;
总计将替换为c+b=8的值;
List<Integer> data = Arrays.asList(23,6,13);
Collections.sort(data);
Collections.reverse(data)
data = data.sublist(0,2);
System.out.println(data);
收集、分类(数据); 集合。反向(数据) 数据=数据。子列表(0,2); 系统输出打印项次(数据); 一行:

int biggest = (a > b ? a : b) > c ? (a > b ? a : b) : c;
两行:

int firstStep = (a > b ? a : b);  
int biggest = firstStep > c ? firstStep : c;
Java 8:

int max  = Arrays.stream(numbers).max().getAsInt();
int sec_max = Arrays.stream(numbers).filter(i -> i != max).max().getAsInt();

一种比什么更有效的方法?对集合进行排序并得到前两个值。这听起来有点像是你把作业丢给了别人;你根本不想自己解决这个难题。你认为你会从中学到什么?@Jägermeister更大的问题是我们通过做他的家庭作业可以学到什么:-)这不是我的hw:D。我在为java测试学习。我可以马上让它更“有效”:不要反转,使用
数据。sublist(1,3)
。当然,也可以使用反向自然顺序比较器对其进行排序。@AndyTurner-true。但这很好地说明了发生了什么。所有这些方法都在内部使用“如果”。我想这个问题是关于一些完全没有条件的东西(比如if/while/etc)。这里似乎有一些关于更简单案例的可能解决方案的调查@ArturBiesiadowski,如果不使用
,您将如何做出决策?@f1sh我认为这就是使问题变得复杂的原因。我还没有答案,但举例来说,对于两个不同的正整数的简化情况,您可以找到更大的一个(假设无条件符号方法)更大的=a x符号(a/b)+b x符号(b/a);我想只要有足够的技巧,3个整数也可以做类似的事情。另外,我们需要得到无条件的符号,这可能可以通过一些涉及零或无穷大的Math.pow的黑客来完成?