如何通过指定几个字符而不是整个字符串来获取java列表的索引?

时间:2016-07-15 10:48:36

标签: java

List list = Arrays.asList("2016:6:12:6:10,"2016:6:8:1:56","2016:6:15:18:37","2016:6:2:8:20");

我希望通过指定几个字符,即上面列表中的"2016:6:15:18:37"索引,"2016:6:15"

 list.indexOf("2016:6:15")

给我o / p not found(-1)这是非常期待的!

如何实现这一目标?

3 个答案:

答案 0 :(得分:1)

如果您希望按前缀匹配,可以使用startsWith执行此操作:

List<String> matches = IntStream.range(0, list.size())
     .filter(i -> list.get(i).startsWith("2016:6:15"))
     .mapToObj(i -> list.get(i))
     .collect(Collectors.toList());

这将为您提供以"2016:6:15"开头的字符串列表。如果您要查找可能位于中间的字符串,请使用contains代替startsWith

答案 1 :(得分:1)

这样

public static void main(String[] args) {
    List<String> list = Arrays.asList("2016:6:12:6:10", "2016:6:8:1:56", "2016:6:15:18:37", "2016:6:2:8:20");
    int index = 0;
    for (; index < list.size(); index++) {
        if (list.get(index).startsWith("2016:6:15"))
            break;
    }
    System.out.println("Index is " + index);
}

,输出

Index is 2

如果要继续查找内存中以模式存储索引开头的所有元素!

答案 2 :(得分:0)

您可以使用StartsWith或包含: 首先指定一个键

String key = "2016:6:15";

现在我们使用循环来查找哪些元素以提供的键开头:

for (Object s : list) {
            if (s.toString().startsWith(key)) {//or contains(key);
                System.out.println(list.indexOf(s.toString()));
            }
        }