如何实现在集合list中进行多条件筛选? 20C

JAVA8以下版本, 如何实现在集合list中进行多条件筛选,请举例说明

15个回答

for (类型 i : list)
{
if (条件1 && 条件2)
listResult.add(i);
}
java8以上,用lambda就可以了。

换成8是最好的 java8带的labmda表达式非常适合处理这个问题

for (类型 i : list)
{
if (条件1 && 条件2){
System.out.println(i);
}
} 这个方法循环是可以的

我没接触LS说的JAVA8的新特性lambda表达式来解决这个问题,所以只能个人见解:
1.既然多条件,那么必然同时满足所有条件,于是我这样做
2.先拿第一个条件,然后遍历集合(原始集合,方便就代号1),找到满足这个条件的对象,然后放入新的List(第二个集合,代号集合2吧)里面(简单的遍历+if,我想你应该能做吧)
3.拿代号2的集合,再重复第2部,只是把if里面的条件改为条件2,得到集合3。。。。
4.那么按照以上逻辑,最后我必然得到了一个满足所有条件的对象的集合(当然这里就可以判断最后获得的集合长度,是0的话就说明没有符合条件的!!!!)!

qq_37301997
qq_37301997 如果在集合1遍历时筛掉的数据里面有适合集合2的条件呢
接近 2 年之前 回复
 List<String> strs = new ArrayList<>();
        List<String> strss = new ArrayList<>();
        strs.add("你");
        strs.add("你好");
        strs.add("你hao");
        strs.add("你好啊");
        strs.add("你hao啊");
        strs.add("你haoa");
        for (String str : strs) {
            if ("你".equals(str) || "你好".equals(str)) {
                strss.add(str);
            }
        }
        System.out.println("strs = " + strs);
        System.out.println("strss = " + strss);

就只能是循环然后用if条件,其他没有什么办法了啊

好像除上面的迭代list外,找不到更好的解决方法了。
我提供一个思路,如果你需要大批量控制每个元素插入的筛选条件,可以自定义继承一个现有的list实现,例如ArrayList,然后覆盖add方法,在里面添加筛选条件,但是这是添加前的处理,而不是例如楼上处理已有集合。

public class ScreenArrayList<String> extends ArrayList<String>{
    @Override
        public boolean add(String  str){
            return str.contains("不想添加") ? false : super.add(str);
        }
}

Java8中使用filter()过滤列表,使用collect将stream转化为list

list.stream().filter(c -> c.getBillId() != null ).map(GyOrder::getBillId).collect(Collectors.toList());

list.contains就可以判断了哈如果你要去重可以使用hashset

共15条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问