假设我有一个名为 的对象House,其中包含List<Room>:
public class House {
private List<Room> roomsList;
public House(List<Room> rooms) {
roomsList = rooms;
}
/*Getter and Setter*/
...
对于 Room,只是一个属性color,其值由 表示int:
public calss Room {
private int color;
public Room(int c) {
color = c;
}
/*Getter and Setter*/
...
现在,使用 Java 8,并给定一个已设置的对象House,我知道如何根据 的值在 my 中List<Room>查找对象,例如:RoomHousecolor
Room myRoom = house.getRooms.stream().filter(r -> r.getColor() == color).findFirst().orElse(null);
我希望能够做的是,给定 aList<House>和值为int c,找到一个或多个属性等于Housea的Roomcolorc
需要明确的是,对于我的用例:
theList<House>既不为 null,也不为空;
everyHouse都有一个List<Room>既不为 null 也不为空的 a;
每个Room都有其属性color集;
每个Room里面House都有独特的颜色
最有可能(但不一定)只有 1 个具有给定Housea的Roomcolor
我可以做这样的事情:
List<House> houseList = /*a given list of houses*/
int c = 4;
House myHouse = null;
for (House house : houseList) {
List<Room> rooms = house.getRooms();
Room roomOfRightColor = house.getRooms.stream().filter(r -> r.getColor() == color).findFirst().orElse(null);
if (room != null) {
myHouse = house;
break;
}
if (myHouse == null) {
/*Handle null*/
}
return myHouse;
但也许有一种更聪明和/或更直接的方法来做到这一点?
白猪掌柜的
相关分类