Как я могу сравнить значение String с ArrayList типа String в Java? - PullRequest
8 голосов
/ 07 июля 2011

Мое требование сравнивает String с ArrayList, который содержит список строк. Кто-нибудь может мне предложить?

Ответы [ 6 ]

18 голосов
/ 07 июля 2011

Использование

ArrayList.contains("StringToBeChecked");

Если в ArrayList присутствует String, эта функция вернет true, иначе вернет false.

7 голосов
/ 07 июля 2011

Это ваш метод:

   private boolean containsString(String testString, ArrayList<String> list) 
   {
        return list.contains(testString);
   }
5 голосов
/ 07 июля 2011

Посмотрите на Список # содержит (T obj) метод, например:

List<String> list = new ArrayList<String>();
list.add("abc");
list.add("xyz");
list.contains("abc"); // true
list.contains("foo"); // false
3 голосов
/ 07 июля 2011

ArrayList может содержать одну или несколько строк. Вы не можете сравнить String с ArrayList. Но вы можете проверить, содержит ли ArrayList, что String не использует contains() метод

String str = //the string which you want to compare
ArrayList myArray =// my array list
boolean isStringExists = myArray.contains(str);// returns true if the array list contains string value as specified by user
3 голосов
/ 07 июля 2011

Существуют различные варианты, которые вы можете рассмотреть:

  • простой для каждого цикла, использующий равные для каждого члена вашего списка, чтобы сравнить его со строкой A.
  • сортировка всех строк всписок, чтобы ускорить сравнение и найти, соответствует ли строка в списке A.
  • , используя sortedSet для достижения вышеупомянутого
  • , помещая строку alls в пул внутренних строк, используя метод intern на каждомпункт в списке и в строке A. Это позволит сравнивать строки, используя == и больше не равно.Тогда сравнение будет намного быстрее.
  • Использование хеш-карты для достижения лучших скоростей сравнения
  • хеш-карта идентификаторов для смешивания двух предыдущих стратегий.

Что ж,плюсы и минусы этих методов, все зависит от того, что вы хотите сделать, почему и как вы сравниваете строки.

С уважением, Стефан

2 голосов
/ 07 июля 2011

Если вы хотите использовать Lambdaj , то проверьте наличие строки как:

private boolean isContains(ArrayList<String> listOfStrings, String testString) {
    return (Lambda.select(listOfStrings, Matchers.equalTo(testString)).size() != 0);  
}

Использование статического импорта select и equalTo повышает удобочитаемость:

select(listOfStrings, equalTo(testString));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...