Как я могу получить доступ к элементам массива списка

#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;  }  } }