Java: сравнение двух списков без учета регистра — методы и примеры

При работе со списками в Java часто необходимо сравнивать их на предмет равенства. В некоторых случаях вам может потребоваться сравнить списки, игнорируя регистр элементов. В этой статье блога будут рассмотрены различные методы сравнения двух списков в Java, игнорируя чувствительность к регистру. Мы предоставим примеры кода для каждого метода, чтобы проиллюстрировать их использование.

Методы сравнения списков без учета регистра:

  1. Использование цикла и сравнения строк:

    public static boolean compareListsIgnoreCase(List<String> list1, List<String> list2) {
       if (list1.size() != list2.size()) {
           return false;
       }
       for (int i = 0; i < list1.size(); i++) {
           if (!list1.get(i).equalsIgnoreCase(list2.get(i))) {
               return false;
           }
       }
       return true;
    }
  2. Преобразование списков в нижний регистр и сравнение:

    public static boolean compareListsIgnoreCase(List<String> list1, List<String> list2) {
       if (list1.size() != list2.size()) {
           return false;
       }
       List<String> lowercaseList1 = new ArrayList<>();
       List<String> lowercaseList2 = new ArrayList<>();
       for (String element : list1) {
           lowercaseList1.add(element.toLowerCase());
       }
       for (String element : list2) {
           lowercaseList2.add(element.toLowerCase());
       }
       return lowercaseList1.equals(lowercaseList2);
    }
  3. Использование потоков Java:

    public static boolean compareListsIgnoreCase(List<String> list1, List<String> list2) {
       if (list1.size() != list2.size()) {
           return false;
       }
       return IntStream.range(0, list1.size())
               .allMatch(i -> list1.get(i).equalsIgnoreCase(list2.get(i)));
    }
  4. Использование коллекций Apache Commons.
    Библиотека коллекций Apache Commons предоставляет удобный метод для сравнения списков без учета регистра.

    import org.apache.commons.collections4.ListUtils;
    public static boolean compareListsIgnoreCase(List<String> list1, List<String> list2) {
       return ListUtils.isEqualList(list1, list2, String::equalsIgnoreCase);
    }

Сравнение двух списков без учета регистра — обычное требование в программировании на Java. В этой статье мы рассмотрели несколько методов достижения этой цели, в том числе использование циклов, преобразование списков в нижний регистр, использование Java Streams и использование библиотеки Apache Commons Collections. Выберите метод, который лучше всего соответствует вашим потребностям и сложности вашего проекта. Используя эти методы, вы можете легко сравнить два списка, игнорируя регистр в ваших приложениях Java.