2017-02-21 42 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

相关问题