2017-02-21 6 views
-3

部分文字列のインデックスをarraylistで取得する方法を教えてください。部分文字列のArraylist indexOfとlastIndexOf

など。これらのエントリを持つArrayListを:

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

60EBFF0001は、文字列の残りの部分は可変で、常に同じです。

indexOf("60EBFF0001") returns -1lastIndexOf("60EBFF0001")も-1を返しますが、私は、インデックス1の前にすべてを削除する必要があり、インデックス3

+0

クラスを作成し、 'equals'と' hashCode'メソッドをオーバーライドして、ここであなたを助けるかもしれませんプレーンな 'String'の代わりに – SomeJavaGuy

+0

例を挙げることができますか? – mosambers

+0

60EBFF0001はエントリの部分文字列です – mosambers

答えて

0

後あなたはおそらくあなたの何かをArrayListを拡張することができますので、私は1と3

が必要自分のような:

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のインスタンスである場合は、あなたがparticulを含む要素の最初と最後のインデックスを決定するために、次のJava 8のコードを使用することができます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

関連する問題