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 - 在 Android/Java 中跟踪回调结果代码的最佳实践?

java - 无法将 5k/秒的记录插入到 impala 中?

java - Java中统计字符串出现的次数

Java ArrayList 的 ?扩展接口(interface)

java - Slick2D + Tiled 无法加载 map

java - 将菜单按钮更改为普通按钮

java - 在 JTextPane (Java 7) 中包装长词

除了级别限制之外的 Java JUL 日志记录传播

java - 如何用CustomView替换工具栏标题

java - 如何绕过 JDBCTemplate org.springframework.dao.DuplicateKeyException