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