В моем стремлении продолжить обучение в Java Я пытаюсь выяснить, есть ли собственный метод Java, который быстро и эффективно позволяет искать строковое значение в массиве ArrayList.Обратный поиск значений массива ArrayList из массива
Вот мой код, который показывает, что я пытаюсь сделать:
public void exampleArrayListofArray() {
ArrayList<String []> al = new ArrayList<>();
al.add(new String[] {"AB","YZ"});
al.add(new String[] {"CD","WX"});
al.add(new String[] {"EF","UV"});
al.add(new String[] {"GH","ST"});
al.add(new String[] {"IJ","QR"});
al.add(new String[] {"KL","OP"});
displayArrayListofArray(al);
}
public void displayArrayListofArray(List<String []> al) {
for (String [] row : al)
for (int column = 0; column <= 1 ; column ++){
System.out.println("Value at Index Row " + al.indexOf(row) +
" Column " + column + " is " + (row)[column]);
}
String lookUpString = "YZ";
lookUpMethod(al, lookUpString);
lookUpString = "ST";
lookUpMethod(al, lookUpString);
lookUpString = "IJ";
lookUpMethod(al, lookUpString);
lookUpString = "AA";
lookUpMethod(al, lookUpString);
}
public void lookUpMethod(List<String []> al, String lookUpString) {
boolean isStringFound = false;
for (String[] row : al) {
for (int column = 0; column <= 1; column++) {
if (al.get(al.indexOf(row))[column] == lookUpString) {
System.out.println("Index of '" + lookUpString + "': " + al.indexOf(row) + column);
isStringFound = true;
}
}
}
if (!isStringFound) {
System.out.println("Search string '" + lookUpString + "' does not exist.");
}
}
Это самый эффективный способ поиска мой ArrayList для данной строки? Есть ли что-то, что я должен сделать, чтобы сделать мой код более эффективным (помимо использования ArrayList)?
Я знаю, что, возможно, для того, чтобы делать то, что я пытаюсь сделать здесь, могут быть более эффективные способы сделать это, чем ArrayList, такие как HashMap, но с моими очень ограниченными знаниями Java. Я продвигаюсь с ArrayList и нужно начинать с нуля с помощью HashMap. Сама конечная цель моего кода сделать следующее:
- Прочитайте текст активов файл для загрузки ArrayList
- Поиска ArrayList для пользователя, вводимого значения
- сделать некоторый Calcs с соседними значениями искомая строка
- Позволяет пользователю обновить соседние значения в искомом строке
- Разрешить пользователю добавлять новую строку, если искомая строка не найдена
- Сохранить все изменения обратно в текстовый актив файл в аль phabetical заказ
Airfix
Существуют естественные способы поиска элементов любой заданной 'Collection', но в этом случае вы просматриваете каждый массив в данной коллекции, поэтому нет никакого родного способа. Для более упорядоченного, сжатого и «декларативного» алгоритма я бы посоветовал использовать Java 8 lambdas. – Mena
Если вы отсортировали коллекции раньше, вы можете применить двоичный поиск, который будет работать в O (log n) вместо O (n). Кроме того, вы можете вернуться из метода поиска, если вы нашли одно совпадение, а не пробегали все остальные оставшиеся списки и массивы. – Palle
Также я мог бы найти ошибку: если вы проверите строки для равенства, вы должны использовать 'firstString.equals (secondString)' -Method. Оператор '==' -Operator возвращает true, если обе ссылки на String указывают на то же место в памяти. – Palle