【问题标题】:Compare int[] with once Integer [duplicate]比较 int[] 和一次 Integer [重复]
【发布时间】:2018-01-13 17:09:15
【问题描述】:

我有int[] 的表格。我对每个用户都有 for 循环,我这样做了:

int[] ids = (values) 
for (User user : listAfterProcessing) {
    if (user.getId().equals(ids)) { ... } 
}

他们没有工作,虽然用户 id 在这个表中...... 感谢您的帮助:)

【问题讨论】:

标签: java int compare


【解决方案1】:

您正在检查getId() 的结果是否等于整个数组ids,默认情况下这是与数组哈希码的比较。

根据这个问题的答案:How to convert int[] into List<Integer> in Java?

没有快速转换的方法。

我在答案的第一个版本中建议的 Arrays.asList() 解决方案在这里不起作用,抱歉。

【讨论】:

  • 当我尝试这个时:if (Arrays.asList(ids).contains(user.getId())) 这不起作用:(
  • 可以在循环前做List&lt;Integer&gt; tempList = Arrays.stream(ids) .boxed() .collect(Collectors.toList());,然后把条件改成if (tempList.contains(user.getId()))
  • 或将条件更改为if(Arrays.stream(ids).anyMatch(id -&gt; id == user.getId())),或在当前循环中执行另一个循环,遍历 ids 数组,然后进行比较。
【解决方案2】:

int 数组与单个Integer 进行比较不会得到您想要的结果。您可以遍历整个数组并测试每个单元格的值,或者您可以保持数组排序并进行二进制搜索:

import java.util.Arrays;

Arrays.sort(ids);
if(Arrays.binarySearch(ids, user.getId().intValue()) >= 0) {}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 2013-09-28
    • 1970-01-01
    • 2020-11-30
    • 2014-07-19
    • 2018-07-01
    相关资源
    最近更新 更多