Java 如何获取ArrayList中元素的开始和结束位置

标签 java

我在 ArrayList 中有一些动态值

ClassnameOne <!----Begin---->
Classnametwo <!----Begin---->
Classnamethree <!----Begin---->
Classnamethree <!----End---->
Classnametwo <!----End--->
ClassnameOne <!----End---->

我想要做的是获取元素的开始出现时间和结束时间。例如,ClassnameOne 为 5,Classnametwo 为 3。 这是我到目前为止所做的:

ArrayList<String> one = new ArrayList<String>();
for (int i = 0; i < one.size(); i++) {
    if(one.get(i).contains("<!----End---->") && one.get(i).equals(one.get(i+1))) {
        break;
    } else {
        count++;
        System.out.println(one.get(i));
    }
    System.out.println(count);
}

这并没有给出正确的答案。你能帮忙吗?

最佳答案

ArrayList<String> one = new ArrayList<String>();
for (int starti = 0; starti < one.size(); ++starti) {
    String[] words = one.get(starti).split(" ", 2);
    if (words[1].equals("<!----Begin---->")) {
        int n = 0;
        String sought = words[0] + " " + "<!----End---->";
        for (int endi = starti + 1; endi < one.size(); ++endi) {
            if (one.get(endi).equals(sought) {
                n = endi - starti;
                break;
            }
        }
        System.out.printf("%s at %d covers %d lines.%n", words[0], starti, n);
    }
}

假设名称不重复,否则将需要堆栈(或类似的)。

关于Java 如何获取ArrayList中元素的开始和结束位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47346134/

相关文章:

java - 检查字符串是否以正则表达式字符串结尾的好方法

java - 增加了整数数组 AES 加密的密码长度

java - Hibernate validator 自定义约束取决于基类

java - 安卓 : Get data in real-time instead of using Async-Task

java - NoClassDefFoundError sun/io/ByteToCharConverter 与 InterBase JDBC 驱动程序

java - SQLite 方言融入 Hibernate-Maven 项目

java - 选择 SWT 文本字段中不存在的所有 (CTRL+A) 选项

java - 为什么实时数据库无法在我的 recyclerview 中工作

java - 通过适配器显示 JSONArray 到 ListView

java - 调用磁盘文件程序时控制台出错