Используйте для этого потоковую операцию.
List<Person> data = Arrays.asList(
new Person(1, "001", "keer"),
new Person(1, "002", "swath"),
new Person(1, "003", "ashok"),
new Person(2, "004", "nag"),
new Person(2, "005", "meg"),
new Person(3, "006", "praveen"),
new Person(3, "007", "jay"));
Map<Integer, List<Person>> threeLists
= data.stream().collect(Collectors.groupingBy(Person::getPartyRoleId));
Теперь у нас есть карта из трех списков. Мы можем взять каждый отдельный список следующим образом:
List<Person> personsWithPartyRoleId1 = threeLists.get(1);
System.out.println("Persons with partyRoleId 1: " + personsWithPartyRoleId1);
Persons with partyRoleId 1: [{ 1, 001, keer }, { 1, 002, swath }, { 1, 003, ashok }]
Аналогично для двух других списков, конечно. Или мы можем перебрать все три списка на карте:
threeLists.forEach((pri, list) -> System.out.println(
"Persons with partyRoleId " + pri + ": " + list));
Persons with partyRoleId 1: [{ 1, 001, keer }, { 1, 002, swath }, { 1, 003, ashok }]
Persons with partyRoleId 2: [{ 2, 004, nag }, { 2, 005, meg }]
Persons with partyRoleId 3: [{ 3, 006, praveen }, { 3, 007, jay }]