Получить индекс, содержащий «.txt» в списке, без использования цикла в JAVA

#java #arrays #list #java-stream #indexof

#java #массивы #Список #java-stream #indexof

Вопрос:

Я хотел бы получить первый индекс строки, которая содержит ".txt" в списке, используя JAVA. без выполнения какого-либо цикла. Потому что у меня много значений в файле, таком как :

 ["sample.txt", "sample.csv","sample.docx","sample","sample.xlsx","sample2.txt, ...];
  

Мне нужен только индекс «sample.txt «

 List<String> files = Arrays.asList(fileList).stream()
                             .map(x -> x.getAbsolutePath())
                             .collect(Collectors.toList());
index = files.indexOf(?);
  

Комментарии:

1. Поскольку вы уже используете streams, почему бы вам не попробовать использовать filter и findFirst?

2. Какой тип fileList ?

Ответ №1:

Вы хотите использовать :

 List<String> list = Arrays.asList(fileList);

String first = list.stream(fileList)
        .filter(x -> x.endsWith(".txt")) // or contains if the .txt can be in the middle
        .findFirst()
        .orElse(null); // you can even throw and exception using orElseThrow

// to get the index you can use
int index = list.indexOf(first);
  

Комментарии:

1. Это то, что я ищу. Большое вам спасибо!