How to get all elements with id = 2?
The below code is giving only the last one i.e. channelMetadataDetail3
:
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class APICheck {
public static void main(String[] args) {
List<ChannelMetadataDetails> channelMetadataDetails =
new ArrayList<ChannelMetadataDetails>();
ChannelMetadataDetails channelMetadataDetail1 =
new ChannelMetadataDetails();
channelMetadataDetail1.setId("2");
channelMetadataDetail1.setUnitOfMeasureId("3");
ChannelMetadataDetails channelMetadataDetail2 =
new ChannelMetadataDetails();
channelMetadataDetail2.setId("2");
channelMetadataDetail2.setUnitOfMeasureId("3");
channelMetadataDetail2.setMeasureTypeId("5");
ChannelMetadataDetails channelMetadataDetail3 =
new ChannelMetadataDetails();
channelMetadataDetail3.setId("2");
channelMetadataDetails.add(channelMetadataDetail1);
channelMetadataDetails.add(channelMetadataDetail2);
channelMetadataDetails.add(channelMetadataDetail3);
channelMetadataDetails =channelMetadataDetails.
stream().filter(cm -> cm.getId().equals("2")).
filter(cm -> cm.getUnitOfMeasureId().equals(null)).
filter(cm -> cm.getMeasureTypeId().equals(null)).
collect(Collectors.toList());
}
}
NOTE:- If cm.getUnitOfMeasureId()
is null then I will get NullPointerException
UPDATE:
In short, I only want those objects whose elements are non-null.
For example using for loop:
for (ChannelMetadataDetails cmEach : channelMetadataDetails) {
if(cmEach.getId() != null && cmEach.getUnitOfMeasureId() == null && cmEach.getMeasureTypeId() == null) {
channelMetadataDetails.stream().filter(cm -> cm.getId().equals("2")).collect(Collectors.toList());
} else if(cmEach.getId() == null && cmEach.getUnitOfMeasureId() != null && cmEach.getMeasureTypeId() == null) {
channelMetadataDetails.stream().filter(cm -> cm.getUnitOfMeasureId().equals("4")).collect(Collectors.toList());
} else if(cmEach.getId() == null && cmEach.getUnitOfMeasureId() == null && cmEach.getMeasureTypeId() != null) {
channelMetadataDetails.stream().filter(cm -> cm.getMeasureTypeId().equals("5")).collect(Collectors.toList());
} else if(cmEach.getId() != null && cmEach.getUnitOfMeasureId() != null && cmEach.getMeasureTypeId() == null) {
channelMetadataDetails.stream().filter(cm -> cm.getId().equals("2") && cm.getUnitOfMeasureId().equals("4")).collect(Collectors.toList());
} else if(cmEach.getId() != null && cmEach.getUnitOfMeasureId() == null && cmEach.getMeasureTypeId() != null) {
channelMetadataDetails.stream().filter(cm -> cm.getId().equals("2") && cm.getMeasureTypeId().equals("5")).collect(Collectors.toList());
} else if(cmEach.getId() != null && cmEach.getUnitOfMeasureId() != null && cmEach.getMeasureTypeId() != null) {
channelMetadataDetails.stream().filter(cm -> cm.getId().equals("2") && cm.getUnitOfMeasureId().equals("4") && cm.getMeasureTypeId().equals("5")).collect(Collectors.toList());
}
}