#java #arrays #arraylist
#Ява #массивы #Список #список объектов #индекс
Вопрос:
У меня есть вопрос:
У меня есть Java-список, который я заполнил разными значениями. Например, у меня есть:
Listlt;String[]gt; l = new ArrayList(); String[] lis = new String[3]; lis[0] = "A"; lis[1] = "B"; lis[2] = "C"; l.add(lis);
и у меня тоже есть другие ценности. Теперь я хочу, чтобы поиск в этом списке выполнялся только по первому полю. Например, мне нужен индекс Aof. Я пытался написать этот код:
int index = l.indexOf("A");
но я получаю -1 в качестве возврата. Я хотел бы знать, как я могу получить доступ к полю списка при загрузке массива.
Комментарии:
1. По умолчанию список вставляется случайным образом, а поиск является линейным. Поэтому вам нужно выполнить поиск по всему списку и вернуть, если вы нашли элемент
2. @Шрирам Нет, списки упорядочены.
Ответ №1:
Мне нужен индекс пятерки.
Нет, вы не можете его получить, так как это элемент внутри массива. Массив не имеет метода indexOf. У меня есть такой метод.
Я хотел бы знать, как я могу получить доступ к полю списка при загрузке массива.
String firstElem= l.get(0)[0];
get(0) дает вам первый вставленный массив, а [0] дает вам первый элемент positiend в этом массиве.
Если вы ищете позицию A
в массиве, откройте массив из списка с l.get(0)
помощью и повторите массив, в котором вы должны получить позицию A
.
Обновление после комментария: Если вы понятия не имеете об индексах, у вас есть
for (int i = 0; i lt; l.size(); i ) { for (int j = 0; j lt; l.get(i).length; j ) { if( l.get(i)[j].equalsIgnoreCase("A")){ return j; } } }
Примечание: Рассмотрите это в качестве примера кода и добавьте проверки на наличие нулей ,дубликатов и т.д…
Комментарии:
1. Мой вопрос: если я не знаю индекс «0» (потому что у меня много данных), как я могу получить его на основе моего первого поля?
2. @Musich87 В таких случаях вам нужно перебирать список и снова перебирать массив. Петля и внутренняя петля.
3. Я видел ваше обновление. Мне нужен не индекс массива, а индекс списка. Например, если в моем списке есть два массива «A», «B», «C» и «D», «E», «F», и я ищу «D», я хочу получить значение 1, потому что это второй массив в моем списке. Ваш код хорош, если я изменю «return j» на «return i», верно? Спасибо, Суреш
4. @Musich87 Точно. 🙂
return i
. Помните, что вы получите результат в качестве первого индекса списка , если в массиве есть повторяющиеся записи. Например : «D» и «D».5. Да, мне нужен первый индекс значения (например, «D») в списке. Все в порядке!
Ответ №2:
Ты хочешь сделать это :
Listlt;Stringgt; l = new ArrayList(); String[] lis = new String[3]; lis[0] = "A"; lis[1] = "B"; lis[2] = "C"; l.addAll(lis);
Или вам вообще не нужно использовать массив
Listlt;Stringgt; l = new ArrayList(); l.add("A"); l.add("B"); l.add("C");
В вашем случае у вас есть список массивов, а не список строк.
Ответ №3:
после вас l.add(lis);
в вашем списке l
будет только один элемент: String[] lis
. не n элементов массива
вы проверяете , есть ли строка "A"
в вашем списке indexOf
, она возвращает -1, говорит: «Нет, у меня нет этого элемента».
Возможно, вы захотите проверить Arrays.asList()
метод, он преобразует массив в a List
. Я думаю, это то, чего ты хочешь.
Ответ №4:
Listlt;String[]gt; l = new ArrayListlt;gt;(); String[] lis = new String[3]; lis[0] = "A"; lis[1] = "B"; lis[2] = "C"; l.add(lis); // now your list have only one element and it's index is 0
В вашем списке нет « A
«. Так l.indexOf("A")
что вернемся -1
Где сейчас «А»?
l.get(0)[0] // l.get(0) is lis array. Then 0th element of lis is A
Если вы хотите получить индекс таким образом, вы можете использовать
String[] lis = new String[3]; lis[0] = "A"; lis[1] = "B"; lis[2] = "C"; int index= Arrays.asList(lis).indexOf("A"); System.out.println(index);
Вышел из строя:
0
Ответ №5:
Ваш List
содержит строковые массивы ( String[]
). Я думаю, что то, что вы хотели сделать, это создать а Listlt;Stringgt;
.
Если вы действительно хотите Listlt;String[]gt;
, чтобы ваш код выглядел примерно так:
for(int i = 0; i lt; list.size(); i ) { String[] array = list.get(i); for(String s : array) { if("A".equals(s)) { return i; } } }