Java在列表中找到与给定数字差异最小的数字

时间:2019-01-28 20:40:56

标签: java

我的问题也许微不足道,但是我无法破解。假设我们有一个数字列表: [-1,-2、1、2、8、9、13],我需要找到一个与给定数字(正向或负向)的差异最小的函数,比方说5。是否有一种简单的方法可以做到这一点?

2 个答案:

答案 0 :(得分:2)

numbers.stream()
   .mapToInt(i -> i-targetNumber)
   .map(Math::abs)
   .min()
   .get() + targetNumber;

像这样吗?

家庭作业:也得到负数:)

编辑:我不能离开它……怎么办

numbers.stream()
    .min((i1,i2) -> Math.abs(i1-target)-Math.abs(i2-target))
    .get();

答案 1 :(得分:0)

您可以将您的电话号码与列表中的所有电话号码进行比较。然后,如果部分差异小于该差异,则可以将数字存储为结果。

public class Home {
public static void main(String[] args) {
  List<Integer> list = Arrays.asList(-1,-2,1,2,8,9,13);
  Scanner s = new Scanner(System.in);
  int number = s.nextInt();
  int result = 0;
  int differencePartial;
  int difference = 1000;


  for (Integer i : list) {
    if (number > i) 
        differencePartial = number - i;
    else
        differencePartial = i - number;
    if (differencePartial < difference) {
        difference = differencePartial;
        result = i;
    }

}

System.out.println(result);
}
}