一个关于ArrayList<>的问题

我的业务类型是这样的,把一个列表里的对象去做遍历,符合条件各种条件就做各种处理,但是我写出来的代码最后只处理同一种条件的,请朋友帮忙看看是在哪里写错了,万分感谢

List test = testService.selectType(Test);
List test1= new ArrayList<>();
for (Test type : test){
  if(type.getType == 1){
    List list = roleService.selectRoleName(type);
    test1.addAll(list);
}else if(type.getType == 2){
    List list = compService.selectCompName(type);
    test1.addAll(list)
}else if(type.getType == 3){
    List list = projectService.selectProjectName(type);
    test1.addAll(list)
}
System.out.println(test1);
}

就是最后出来的结果就只有一种type类型的,其他类型的就没办法放到test1里面去,感谢帮忙

debugger看下哪个条件没下去吧

那你设断点跟啊,看getType的值到底是个什么东西,再往前找,数据源头在哪,是不是放进list里之前先做了什么处理了已经都是同一个类型了

getType() 是个方法吧 返回 1 2 3来判断类型

用增强for循环对集合进行遍历,只能获取集合元素,不能对集合进行操作,类似迭代器的简写形式,但是迭代器可以对元素进行remove操作(ListIterator可以进行增删改查的操作)。
你用普通for循环试试

你这样使用addAll没有啥问题,具体为啥没有添加到里面,你得看看是不是没有查询到数据

原因也就两种情况
1、test集合里面就一种类型
2、test多种类型,但是条件判断的时候,只有一种类型查出来数据了,其他类型没查出来
此外代码这样写很不好看,建议
1、全用if来判断,不要用if else
2、list的addAll方法,不能放一个null进去,会报错,可以放一个大小为0的集合
3、不要出现魔法值,type类型 1、2、3可以封装成枚举
4、包装类型不要用==,虽然不影响结果,但是不建议,要用equals()
5、你用sout打印,好像不行吧

System.out.println(test1); 放在了for循环里面吧,应该要放在外边?