java - 我如何访问这些索引

标签 java

我有一个列表如下:

List<String> x = new ArrayList<String>();
x.add("Date : Jul 15, 2010 Income : 8500 Expenses : 0");
x.add("Date : Aug 23, 2010 Income : 0 Expenses : 6500");
x.add("Date : Jul 15, 2010 Income : 0 Expenses : 4500");

我现在想按如下方式访问这些索引:

int index1 = x.indexOf("Date : Aug 23, 2010");
//1

int index2 = x.indexOf("Date : Jul 15, 2010");
//0

int index3 = x.lastIndexOf("Date : Jul 15, 2010");
//2

有什么帮助吗?提前致谢。

这是我一直在寻找的解决方案:

// traverse the List forward so as to get the first index
private static int getFirstIndex(List<String> theList, String toFind) {
    for (int i = 0; i < theList.size(); i++) {
        if (theList.get(i).startsWith(toFind)) {
            return i;                
        }
    }
    return -1;
}

// traverse the List backwards so as to get the last index
private static int getLastIndex(List<String> theList, String toFind) {
    for (int i = theList.size() - 1; i >= 0; i--) {
        if (theList.get(i).startsWith(toFind)) {
            return i;               
        }
    }
    return -1;
}

这两种方法完全可以满足我想要的要求。谢谢大家!

最佳答案

您无法使用任何内置方法来做到这一点。

您有两个选择:

  1. 手动迭代列表并使用 startsWith() (或 indexOf() ,取决于您到底想要什么)
  2. 将您的数据结构更改为 Map<String,String>并使用日期作为键。

一般来说,您尝试使用 String作为一种结构化数据类型,但事实并非如此。它是非结构化的通用数据。这实际上并不是在代码中处理的最佳数据类型。

关于java - 我如何访问这些索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16943262/

相关文章:

java - Kubernetes java api 客户端更改 pod 标签

java - Kotlin 中的 Try-catch block ——返回什么

javascript - 无法在 MacOS 上打开 Intellij

java - 如何使用 iText 1.5.4 添加多行页脚?

java - 编写一个有 2 个线程的程序,交替打印

java - Java线程中的System.exit

java - 无法为Android build.gradle文件添加其他Maven存储库

java - 按长度和字母顺序按行打印单词

java - 由于缺少 bean 端点映射,迁移到 Spring WS 2.0 失败?

java - s.nextLine() 在 do 循环中被跳过