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

在日常开发中,经常会遇到判断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集合包含元素就这五个方法,另外就该考虑效率问题了 …

经验分享 程序员 微信小程序 职场和发展