Как найти объекты на основе индекса массива Integer? - PullRequest
0 голосов
/ 06 декабря 2018

У меня есть массив Integer как

Integer[] myArray= {1,3}; 

У меня есть еще один список объектов MyDept, который имеет свойства id и name.

Я хочу получить теобъекты MyDept, чьи идентификаторы совпадают со значениями myArray.

Если объекты в списке

Objfirst(1,"Training"), Objsecond(2,"Legal"), Objthird(3,"Media") 

, тогда я хочу Objfirst и Objthird.

1 Ответ

0 голосов
/ 06 декабря 2018

Вы можете сделать это в два шага как:

List<MyDept> myDepts = new ArrayList<>(); // initialised arraylist of your objects

// collect the objects into a Map based on their 'id's
Map<Integer, MyDept> myDeptMap = myDepts.stream().collect(Collectors.toMap(MyDept::getId, Function.identity()));

// iterate over the input array of 'id's and fetch the corresponding object to store in list
List<MyDept> myDeptList = Arrays.stream(myArray)
        .map(myDeptMap::get)
        .collect(Collectors.toList());

с минимальным объектом как:

class MyDept{
    int id;
    String name;
    // getters and setters
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...