#java #string #methods #split #output
Вопрос:
Это мой метод, который возвращает список строковых значений, подобных этому: 10x2021
И это значение, которое я отправил своему методу.
List<HistoryItem> historyItems = Arrays.asList
(
new HistoryItem(364, "10x2021", Long.valueOf("009"))
);
public static List<String> foo(List<HistoryItem> historyItems) {
List<HistoryItem> collect = historyItems.stream().filter(item -> item.getCreditStatus().equals(Long.valueOf("009")) || item.getCreditStatus().equals(Long.valueOf("0010")))
.collect(Collectors.toList());
List<String> reportingPeriods = new ArrayList<>();
for (HistoryItem historyItem : historyItems) {
reportingPeriods.add(historyItem.getReportingPeriod());
}
return reportingPeriods;
}
Что я хочу сделать, так это я хочу, чтобы результат выглядел так 2021-10 , 2021-9, not 10x2021
. Я не мог использовать методы строки именно так, как хотел. Как решить эту проблему?
Комментарии:
1. Можете ли вы свести это к конкретной проблеме. Ты пытаешься превратиться
10x2021
в2021-10
? Это можно сделать с помощью регулярного выражения или строки.разделить2. да, так и есть. Я хочу перевернуть его и поставить запятую в конце.
Ответ №1:
Это должно исправить это для вас:
List<String> reportingPeriods = historyItems.stream().map(hI -> {
String[] splitted = hI.getReportingPeriod().split("x");
return splitted [1] "-" splitted [0]; }).collect(Collectors.toList());
Комментарии:
1. Мы кое-что забыли, не могли бы вы рассказать нам, как поставить запятую в конце? @Али Бен Заррук
2. Вы имеете в виду что-то вроде 2021-9, 2021-9, 2021-9 ?
3. Да, хочу. 2021-10 , 2021-9, 2021-8 вот так.
4. вы можете выполнить String.join(«,», reportingPeriods) или вместо сбора в список сразу перечислить сбор в объединенную строку с помощью .collect(Collectors.joining(«,»))
5. Строка с разделенными запятыми периодами = historyItems.stream().карта(hI -> { Строка[] разделена = hI.getReportingPeriod().разделена(«x»); возврат разделен [1] «-» разделен [0]; }).сбор(Сборщики.объединение(«,»));