Поиск коллекции Java по строке - PullRequest
0 голосов
/ 15 января 2011

У меня есть коллекция, которая имеет следующую структуру ...

ArrayList<String[]> schools = new ArrayList<String[]>();

У меня также есть строка, скажем "United Berkley"

Теперь я хочу выполнить поиск "школы" для вышеупомянутой строки и возвращают String [] , если есть совпадение в любом массиве String [] .

У меня есть этот базовый код, но он потерян, чтобы найти для него желаемое регулярное выражение .

String target = this.Schools.get(s)[a];
if (target.matches("*")) {
   schools.add(this.Schools.get(s));
}

Ответы [ 5 ]

1 голос
/ 15 января 2011

Как насчет этого?

        List<String[]> schoolsList = new ArrayList<String[]>();
        String [] schools = {"United Berkley","Super Standford"};
        schoolsList.add(schools);
        String target = "United Berkley";
        for(String [] school:schoolsList){
            Arrays.sort(school);
            int position = Arrays.binarySearch(school,target);
            if(position>=0){
                System.out.println("Found target");
            }else{
                System.out.println("Target is not in the list");
            }
        }

печатает "Найденная цель".

1 голос
/ 15 января 2011

Ваша schools структура данных выглядит немного ... странно.

Вы уверены, что хотели не ArrayList<String>?

Если это так, то вы можете просто использовать:

if (schools.contains("United Berkley"))
0 голосов
/ 15 января 2011

Вам не нужно регулярное выражение для поиска известной строки - просто используйте target.equals ("United Berkley"). Вы можете облегчить себе задачу, убедившись, что ваши массивы String [] отсортированы - используйте Arrays.sort (...) , чтобы держать их в порядке, и используйте Arrays.binarySearch (...) быстро их искать.

Хотя я подвергаю сомнению расположение ваших структур данных - это не самый естественный способ сделать то, что вы хотите. A HashMap или даже просто отсортированный List кажется более подходящим.

0 голосов
/ 15 января 2011

Вам не нужно регулярное выражение для поиска известной строки - просто используйте target.equals ("United Berkley"). Вы можете облегчить себе задачу, убедившись, что ваши массивы String [] отсортированы - используйте Arrays.sort (...) , чтобы держать их в порядке, и используйте Arrays.binarySearch (...) быстро их искать.

Хотя я подвергаю сомнению расположение ваших структур данных - это не самый естественный способ сделать то, что вы хотите. A HashMap или даже просто отсортированный List будет лучше.

0 голосов
/ 15 января 2011

Просто используйте String.equals (your-String) и переберите массив, чтобы соответствовать школам. Или используйте list.contains (your-String)
Но я думаю, что использование HashMap обеспечит лучшее время доступа для такого рода вещей.

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