У меня проблема с получением списка, включающего множество индексов, в результате получения значения ключа. У меня есть ошибка в моем коде.
Класс моего города показан ниже.
public class City implements Serializable{
private String cityName;
private String countryName;
...
}
Мой Arraylist содержит названия городов и названия стран, как показано ниже.
Shanghai, China
...
...
Поскольку Arraylist очень большого размера, например, 50000, я применяю бинарный поиск для поиска любого символа или слова в списке.
Я хочу найти любой символ или слово, чувствительное к верхнему или нижнему регистру, и получить обратно их индексы. .
Как я могу выполнить этот процесс?
Код выполняется в соответствии с определенным символом, строкой символов или словом, показанным ниже.
Примеры примеров
Enter the word of character which I want to search : W
Enter the word of character which I want to search : Sha
Enter the word of character which I want to search : Shanghai
Вот мой фрагмент кода, показанный ниже.
Scanner scanner = new Scanner(System.in);
System.out.print("Enter the word of character which I want to search : ");
String charWord = scanner.nextLine();
System.out.println("Search " + charWord);
Integer[] index = BinarySearch.binarySearch(cities, charWord);
System.out.println(index.toString());
public static Integer[] binarySearch( ArrayList<City> list, String key ) {
Comparable comp = (Comparable)key;
List<Integer> arrlist = new ArrayList<Integer>();
Integer arr[] = null;
int res = -1, min = 0, max = list.size() - 1, pos;
while( ( min <= max ) && ( res == -1 ) ) {
pos = (min + max) / 2;
int comparison = comp.compareTo(key.contains(list.get(pos).getCityName()));
if( comparison == 0) {
res = pos;
arrlist.add(res);
}
else if( comparison < 0)
max = pos - 1;
else
min = pos + 1;
}
return arrlist.toArray(arr);
}