名單

2014-09-26 74 views
1

的如何訪問數組元素我有一個問題:名單

我有一個列表的Java,我已經填充了不同的值。例如,我有:

List<String[]> l = new ArrayList(); 
String[] lis = new String[3]; 
lis[0] = "A"; 
lis[1] = "B"; 
lis[2] = "C"; 
l.add(lis); 

我也有其他值。 現在,我想在此列表中僅搜索第一個字段。例如,我想要A的indexOf。 我試圖寫這個代碼:

int index = l.indexOf("A"); 

但我得到-1作爲返回。我想知道當我加載數組時,如何訪問列表的某個字段。

+0

列表是默認和搜索隨機插入是線性的。所以你必須搜索整個列表並返回,如果發現元素 – Shriram 2014-09-26 10:14:42

+0

@Shriram不,列表是有序的。 – 2014-09-26 10:19:29

回答

3

我想A的的indexOf。

不,你不能得到它,因爲它是數組內的元素。數組沒有indexOf方法。列表有這種方法。

我想知道我如何訪問列表中的一個字段,當我加載一個數組。

String firstElem= l.get(0)[0]; 

GET(0)爲您提供第一插入陣列和[0]爲您提供了陣列中的第一positiend元件。

如果您正在查找陣列中的A的位置,請從l.get(0)列表中訪問陣列,並遍歷您獲得的位置爲A的陣列。評論後

更新:如果您有沒有索引的想法你有

for (int i = 0; i < l.size(); i++) { 
     for (int j = 0; j < l.get(i).length; j++) { 
      if(l.get(i)[j].equalsIgnoreCase("A")){ 
       return j; 
      } 
     } 
    } 

注:考慮到作爲一個示例代碼,並添加檢查空的,副本等等

+0

我的問題是:如果我不知道索引「0」(因爲我有大量數據),我如何才能在基於第一個字段的位置檢索它? – Musich87 2014-09-26 10:18:42

+0

@ Musich87在這種情況下,您需要迭代列表並重新遍歷數組。循環和一個循環。 – 2014-09-26 10:19:50

+0

我已經看到您的更新。我不想要數組索引,而是列表索引。例如,如果我的列表「A」,「B」,「C」和「D」,「E」,「F」中有兩個數組並且我搜索「D」,我想檢索值1,因爲它是我列表中的第二個數組。如果我把「return j」改爲「return i」,你的代碼是好的,對吧?謝謝Suresh – Musich87 2014-09-26 10:35:38

0

你要做到這一點:

List<String> l = new ArrayList(); 
String[] lis = new String[3]; 
lis[0] = "A"; 
lis[1] = "B"; 
lis[2] = "C"; 
l.addAll(lis); 

或者你沒有在所有

List<String> l = new ArrayList();  
l.add("A"); 
l.add("B"); 
l.add("C"); 

使用數組在你的情況,你有數組,而不是字符串列表清單。

0

l.add(lis);後您的列表l只有一個單一的元素:String[] lis。該陣列

您是否通過indexOf一個String "A"在列表中,則返回-1的不是n個元素,說,不,我沒有這樣的元素。

您可能想檢查Arrays.asList()方法,它將數組轉換爲List。我想這就是你想要的。

0
List<String[]> l = new ArrayList<>(); 
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

「A」現在在哪裏?

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 
+4

誰曾經冷靜下來,在腦中有一些問題。 – 2014-09-26 10:16:40

0

List包含字符串陣列String[])。我認爲你的意思是創建一個List<String>

如果你真的想要一個List<String[]>,那麼你的代碼將是這個樣子:

for(int i = 0; i < list.size(); i++) 
{ 
    String[] array = list.get(i); 
    for(String s : array) 
    { 
     if("A".equals(s)) 
     { 
      return i; 
     } 
    } 
}