Java判断List集合中是否包含某个元素

本文介绍五种判断List集合是否包含特定元素的方法:for循环遍历、使用List.contains、转换为Set后使用Set.contains、使用Arrays.binarySearch及ArrayUtils.contains,并对比它们的优缺点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在日常开发中,经常会遇到判断list集合中包含某个元素的额需求,特此记录。

使用for循环

public class ListTest {

    public static boolean loop(List<String> list, String value) {
        for (String str : list) {
            if (Objects.equals(str, value)) {
                return true;
            }
        }
        return false;
    }

    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("1");
        list.add("2");
        list.add("3");
        list.add("4");
        list.add("5");
        System.out.println("循环判断:" + loop(list, "2"));
    }

}

使用List.contains判断

public class ListTest {

    public static boolean listContains(List<String> list, String value) {
        return list.contains(value);
    }

    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("1");
        list.add("2");
        list.add("3");
        list.add("4");
        list.add("5");
        System.out.println("contains判断:" + listContains(list, "2"));
    }

}

使用set.contains判断

public class ListTest {

    public static boolean setContains(List<String> list, String value) {
        Set<String> stringSet = new HashSet<String>(list);
        return stringSet.contains(value);
    }

    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("1");
        list.add("2");
        list.add("3");
        list.add("4");
        list.add("5");
        System.out.println("setContains判断:" + setContains(list, "2"));
    }

}

使用Arrays.binarySearch判断

public class ListTest {

    public static boolean arraysBinarySearch(List<String> list, String value) {
        int a =  Arrays.binarySearch(list.toArray(), value);
        if(a > 0) {
            return true;
        }else {
            return false;
        }
    }

    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("1");
        list.add("2");
        list.add("3");
        list.add("4");
        list.add("5");
        System.out.println("arraysBinarySearch判断:" + arraysBinarySearch(list, "2"));
    }

}

Arrays.binarySearch()方法只能用于有序数组!!!

使用ArrayUtils.contains判断

public class ListTest {

    public static boolean arrayUtils(List<String> list, String value) {
        return ArrayUtils.contains(list.toArray(), value);
    }

    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("1");
        list.add("2");
        list.add("3");
        list.add("4");
        list.add("5");
        System.out.println("arrayUtils判断:" + arrayUtils(list, "2"));
    }

}

ArrayUtils 属于 Apache Commons类库

ArrayUtils的contains方法的源码也是使用循环判断的方式。

		if (array == null) {
          return -1;
      } else {
          if (startIndex < 0) {
              startIndex = 0;
          }

          int i;
          if (objectToFind == null) {
              for(i = startIndex; i < array.length; ++i) {
                  if (array[i] == null) {
                      return i;
                  }
              }
          } else {
              for(i = startIndex; i < array.length; ++i) {
                  if (objectToFind.equals(array[i])) {
                      return i;
                  }
              }
          }

          return -1;
      }

通常判断list集合包含元素就这五个方法,另外就该考虑效率问题了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值