2017-02-21 76 views
-3

如何獲取一個數組列表中的一個子串的索引。Arraylist indexOf和lastIndexOf子串

E.g. ArrayList中與這些項:

[60EBFF0003CF030501CF0304, 60EBFF000104FF210D0301A5, 60EBFF0002020301F9100401, 60EBFF0003CF030501CF0304, 60EBFF000104FF210D0301A5] 

60EBFF0001始終是相同的,該字符串的其餘部分是可變的。

indexOf("60EBFF0001") returns -1lastIndexOf("60EBFF0001")也返回-1,但我需要1和3

因爲我有指數1日之前和索引後刪除一切3.

+0

創建一個類並覆蓋'equals'和'hashCode'方法可以幫助你在這裏而不是使用普通的'String' – SomeJavaGuy

+0

你能舉一個例子嗎? – mosambers

+0

60EBFF0001是條目的子字符串 – mosambers

回答

0

,也許可以與東西延伸ArrayList您自己喜歡的:

private class MyArrayList extends ArrayList<String> { 
    @Override 
    public int indexOf(Object o) { 
     int foundAtIndex = -1; 

     for (int index = 0; index < size(); index++) { 
      if (get(index).contains(((String) o))) { 
       foundAtIndex = index; 
       break; 
      } 
     } 

     return foundAtIndex; 
    } 

    @Override 
    public int lastIndexOf(Object o) { 
     int foundAtIndex = -1; 

     for (int index = size() - 1; index >= 0; index--) { 
      if (get(index).contains(((String) o))) { 
       foundAtIndex = index; 
       break; 
      } 
     } 

     return foundAtIndex; 
    } 
} 
0

list是你的ArrayList實例可以使用下面的Java 8代碼,以確定哪些包含particul元素的第一和最後一個索引AR子:

IntSummaryStatistics stats = IntStream.range(0, list.size()) 
     .filter(i -> list.get(i).contains("60EBFF0001")) 
     .summaryStatistics(); 
if (stats.getCount() > 0) { 
    System.out.println("First index: " + stats.getMin()); 
    System.out.println("Last index: " + stats.getMax()); 
} else { 
    System.out.println("No match"); 
} 

順便說一句,包含60EBFF0001元素的最後一個索引不是3,但是4