Java 子字符串的Arraylist indexOf和lastIndexOf

Java 子字符串的Arraylist indexOf和lastIndexOf,java,android,arraylist,Java,Android,Arraylist,如何在arraylist中获取子字符串的索引 例如,带有以下条目的Arraylist: [60EBFF0003CF030501CF0304, 60EBFF000104FF210D0301A5, 60EBFF0002020301F9100401, 60EBFF0003CF030501CF0304, 60EBFF000104FF210D0301A5] 60EBFF0001始终相同,字符串的其余部分是可变的 indexOf(“60EBFF0001”)返回-1和lastIndexOf(“60EBFF0

如何在arraylist中获取子字符串的索引

例如,带有以下条目的Arraylist:

[60EBFF0003CF030501CF0304, 60EBFF000104FF210D0301A5, 60EBFF0002020301F9100401, 60EBFF0003CF030501CF0304, 60EBFF000104FF210D0301A5]
60EBFF0001
始终相同,字符串的其余部分是可变的

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


因为我必须删除索引1之前和索引3之后的所有内容。

您可能可以使用自己的类似内容扩展
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;
    }
}
私有类MyArrayList扩展了ArrayList{
@凌驾
public int indexOf(对象o){
int foundAtIndex=-1;
对于(int index=0;index=0;index--){
if(get(index).contains(((String)o))){
foundAtIndex=指数;
打破
}
}
回归基金指数;
}
}

当您的ArrayList实例是
列表时,您可以使用以下Java 8代码来确定包含特定子字符串的元素的第一个和最后一个索引:

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。

创建一个类并重写
equals
hashCode
方法可能会帮助您,而不是使用普通的
String
扫描您给出的示例?60EBFF0001是一个条目的子字符串