小编Vic*_*ton的帖子

使用集合引用作为if语句条件而不进行比较?

我有点不好意思问这个,因为我确定这是一个非常基本的问题,但经过搜索和思考,我仍然无法解决这个问题.

代码来自一个班级,导师在我的课程收集教程中进行了开发.该类代表具有相关犯罪代码的地区犯罪表.工作表实现为SortedMap,其中键的类型为String(表示区),值为Integers的ArrayList(表示犯罪代码).

有一种方法,我们在教程期间没有设法完成导师发送的副本,我不能遵循逻辑.该方法的代码如下

/**
 * displays districts affected by given crime code
 * 
 *     @param Integer crime code
 *     @return     none
 */
public void displayAffectedDistricts(Integer crimeCode)
{
    ArrayList<Integer> searchCode;
    for(String eachDistrict:  crimeTable.keySet())
    {
        searchCode = new ArrayList<Integer>();
        searchCode.add(crimeCode);
        if(!(searchCode.retainAll(crimeTable.get(eachDistrict))))
        {
           System.out.println("Code "+crimeCode+" found in district "+eachDistrict);
         } 
    }
}
Run Code Online (Sandbox Code Playgroud)

我运行代码,可以看到这有效,但我无法遵循if条件的逻辑.

我的理解是searchCode.retainAll(crimeTable.get(eachDistrict))将评估对列表searchCode的引用,并且,此时,如果eachDistrict的Map条目具有crimeCode,则searchCode将包含crimeCode参数给出的单个值在它的一组值或否则将为空.

据我所知,这不是布尔值,因此不能用作没有比较运算符的if条件.

有人可以解释一下我缺少的东西吗?

java collections if-statement boolean reference

3
推荐指数
1
解决办法
397
查看次数

标签 统计

boolean ×1

collections ×1

if-statement ×1

java ×1

reference ×1