判断一个集合中是否有另外一个集合中的一些元素

判断一个集合中是否有另外一个集合中的一些元素

1、判断集合中是否包含某个元素
// 创建一个集合
ArrayList<String> one = new ArrayList<>();
one.add("a");
one.add("b");
one.add("d");

// 创建另一个集合
ArrayList<String> other = new ArrayList<>();
other.add("kk");
other.add("ab");
other.add("d");

//判断集合中是否存在某个元素
boolean contains = one.contains("a");
System.out.println("判断集合中是否存在某个元素"+contains);//true
//如果想要使用contains判断两个集合,可以使用循环,对一个集合循环其中元素然后使用contains判断元素是否在另一个集合中

2、使用releaseAll交集判断
			//使用releaseAll交集判断
//        boolean b = one.retainAll(other);
//        System.out.println("使用releaseAll交集判断"+b);//true
//        System.out.println("取交集后的集合one"+one);//[d]
//        System.out.println("取交集后的集合other"+other);//[kk, ab, d]

//        //结论1:把取得的交集部分放在第一个集合中。改变了原集合的值

        // 创建另一个和one完全相同的集合
        ArrayList<String> other1 = new ArrayList<>();
        other1.add("a");
        other1.add("b");
        other1.add("d");
        //取交集
//        boolean b1 = one.retainAll(other1);
//        System.out.println("使用releaseAll交集判断"+b1);//false
//        System.out.println("取交集后的集合one"+one);//[a, b, d]
//        //结论2:如果两个集合相同返回false

        // 创建另一个完全不相同的集合
        ArrayList<String> other2 = new ArrayList<>();
        other2.add("aa");
        other2.add("bb");
        //取交集
//        boolean b2 = one.retainAll(other2);
//        System.out.println("使用releaseAll交集判断"+b2);//true
//        System.out.println("取交集后的集合one"+one);//[]
        //结论3:如果两个集合不存在交集,返回true

 		/**
         * 1.并集
         * list1.addAll(list2);
         *
         * 2.无重复并集
         * list2.removeAll(list1);
         * list1.addAll(list2);
         *
         * 3.交集
         * list1.retainAll(list2);
         *
         * 4.差集
         * list1.removeAll(list2);
         *
         */       

最总结论:两个集合部分包含、不包含的时候返回true 全部包含的时候返回false (观察one的值如果删除了就会返回true)无法完全用于判断一个集合中是否包含另一个集合中的值)

3、使用java8判断
boolean b = one.stream().anyMatch(e -> contains(other, e));

System.out.println("one的值: " + one + " ; 是否包含:" + b);//one的值: [a, b, d] ; 是否包含:true

boolean b1 = one.stream().anyMatch(e -> contains(other1, e));
System.out.println("one的值: " + one + " ; 是否包含:" + b1);//one的值: [a, b, d] ; 是否包含:true

 boolean b2 = one.stream().anyMatch(e -> contains(other2, e));
 System.out.println("one的值: " + one + " ; 是否包含:" + b2);//one的值: [a, b, d] ; 是否包含:false



	//    anyMatch:判断的条件里,任意一个元素成功,返回true
    //    allMatch:判断条件里的元素,所有的都是,返回true
    //    noneMatch:与allMatch相反,判断条件里的元素,所有的都不是,返回true
	/**
     * isPresent()方法用于确定此Optional实例中是否存在值。
     * 如果此Optional实例中不存在任何值,则此方法返回false,否则返回true。
     *
     * public boolean isPresent() {
     *         return value != null;
     *     }
     */

private static boolean contains(List<String> cus, String value){
        return cus.stream().filter(f -> f.equals(value)).findAny().isPresent();
    }

场景2:

package com.itheima.reggie.entity;
import lombok.Builder;
import lombok.Data;

@Data
@Builder
public class User {

    private Long id;
    private String name;

}

--

List<User> users = new ArrayList<>();
        users.add(User.builder().id(1L).name("Z1").build());
        users.add(User.builder().id(2L).name("Z2").build());
        users.add(User.builder().id(3L).name("Z2").build());
        // 创建一个集合
        ArrayList<Long> one1 = new ArrayList<>();
        one1.add(1L);
        one1.add(2L);
        boolean b3 = one1.stream().anyMatch(e -> containss(users, e));
        System.out.println("one1的值: " + one1 + " ; 是否包含:" + b3);
        //one1的值: [1, 2] ; 是否包含:true

    }

    private static boolean containss(List<User> users, long value) {
        return users.stream().mapToLong(e -> e.getId()).filter(e -> e == 					value).findAny().isPresent();
    }

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值