Получить и редактировать подсписок в основном списке по Java 8 - PullRequest
0 голосов
/ 23 октября 2018

У меня много основных списков, и в нем есть подсписок.Как получить доступ к подсписку и редактировать его с помощью java 8.

Пример.

List<Student> list = ....; 
list[0]  = {id = 1, name = "aa", ListMinute = List<String> ls1}
list[1]  = {id = 2, name = "bb", ListMinute = List<String> ls2}
list[2]  = {id = 3, name = "cc", ListMinute = List<String> ls3}
list[3]  = {id = 4, name = "dd", ListMinute = List<String> ls4}

Пример подсписка списка [0]:

List<String> ls1 = {"120", "150", "45", "195"}; //List in minutes.

Как конвертировать весь подсписок из минут в часы и минуты.Вывод подсписка списка [0]:

List<String> ls1 = {"2", "2.30", "0.45", "3.15"}; // List in hours and minutes.

Ответы [ 2 ]

0 голосов
/ 23 октября 2018

Как сказал @nullpointer, вы можете изменить свой list экземпляр с помощью replaceAll, например

list.stream()
        .map(Student::getListMinute)
        .forEach(minutes ->
                minutes.replaceAll(min -> format("%d.%d", parseInt(min) / 60, parseInt(min) % 60))
        );
0 голосов
/ 23 октября 2018

Один из способов получить это преобразование может быть:


List<String> ls1 = List.of("120", "150", "45", "195"); //List in minutes.
List<String> out = ls1.stream()
         .mapToInt(Integer::parseInt)
         .mapToObj(min -> String.format("%d.%d", min / 60, min % 60)) 
         .collect(Collectors.toList());
// would output 2.0 instead of 2 though

Если вы хотите обновить существующий List, вы можете попробовать replaceAll

List<String> ls1 = Stream.of("120", "150", "45", "195").collect(Collectors.toList()); //List in minutes.
ls1.replaceAll(a -> {
    int min = Integer.parseInt(a);
    return String.format("%d.%d", min / 60, min % 60);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...