需要筛选2个列表&;在java中添加到seprate列表中
我有两份清单:需要筛选2个列表&;在java中添加到seprate列表中,java,list,arraylist,Java,List,Arraylist,我有两份清单: AvailableRoomType-[标准,超豪华] wholeRoomtype-[标准型、超豪华型、豪华型] 我需要对此进行筛选并添加到单独的列表中不可用的RoomType-[Deluxe] for(int j = 0; j < avaliableRoomType.size() ; j++) { for(int i = 0; i < wholeRoomtype.size(); i++) { String tempA
-[标准,超豪华]AvailableRoomType
-[标准型、超豪华型、豪华型]wholeRoomtype
不可用的RoomType
-[Deluxe]
for(int j = 0; j < avaliableRoomType.size() ; j++) {
for(int i = 0; i < wholeRoomtype.size(); i++) {
String tempAv = avaliableRoomType.get(j);
String tempHotelRoomId = wholeRoomtype.get(i);
if(!tempAv.equals(tempHotelRoomId)){
unavailableRoomtype.add(tempHotelRoomId);
}
}
}
for(int j=0;j
但是我有重复的值。如果您不想有重复的值,请构造一个新值,然后将其转换回:
List List=newarraylist(set);
列出不可用的RoomType=new ArrayList();
用于(字符串roomType:wholeRoomtype){
如果(!AvailableRoomType.contains(roomType)){
不可用的roomType.add(roomType);
}
}
在这里,您可以检查此类型是否已添加到unavailableRoomtype列表中。如果已经添加了,您什么也不做。我建议使用
Set
s而不是List
s:
Set<String> roomTypes;
Set<RoomType> availableRoomType;
Set<RoomType> unavailableRoomType;
设置房间类型;
设置availableRoomType;
设置不可用的房间类型;
实施示例:
public static void main(String[] args) {
final Set<String> roomTypes = new LinkedHashSet<>();
final Set<String> availableRoomType = new LinkedHashSet<>();
final Set<String> unavailableRoomType = new LinkedHashSet<>();
roomTypes.add("Standard");
roomTypes.add("Deluxe");
roomTypes.add("SuperDeluxe");
// .. other entries
// determine what room types are available
availableRoomType.add("Standard");
availableRoomType.add("SuperDeluxe");
// your filtering for unavailable room types
roomTypes.stream()
.filter(e -> !availableRoomType.contains(e))
.forEach(unavailableRoomType::add);
System.out.printf("Available room types:\n");
availableRoomType.forEach(System.out::println);
System.out.printf("\nUnavailable room types:\n");
unavailableRoomType.forEach(System.out::println);
}
publicstaticvoidmain(字符串[]args){
最终设置roomTypes=新LinkedHashSet();
最终设置availableRoomType=新LinkedHashSet();
最终设置不可用RoomType=新建LinkedHashSet();
房间类型。添加(“标准”);
房间类型。添加(“豪华”);
房间类型。添加(“超级豪华”);
//…其他条目
//确定可用的房间类型
添加(“标准”);
availableRoomType.add(“超级豪华”);
//筛选不可用的房间类型
roomTypes.stream()
.filter(e->!availableRoomType.contains(e))
.forEach(不可用的RoomType::add);
System.out.printf(“可用房间类型:\n”);
availableRoomType.forEach(System.out::println);
System.out.printf(“\n可用房间类型:\n”);
不可用的RoomType.forEach(System.out::println);
}
输出为:
public static void main(String[] args) {
final Set<String> roomTypes = new LinkedHashSet<>();
final Set<String> availableRoomType = new LinkedHashSet<>();
final Set<String> unavailableRoomType = new LinkedHashSet<>();
roomTypes.add("Standard");
roomTypes.add("Deluxe");
roomTypes.add("SuperDeluxe");
// .. other entries
// determine what room types are available
availableRoomType.add("Standard");
availableRoomType.add("SuperDeluxe");
// your filtering for unavailable room types
roomTypes.stream()
.filter(e -> !availableRoomType.contains(e))
.forEach(unavailableRoomType::add);
System.out.printf("Available room types:\n");
availableRoomType.forEach(System.out::println);
System.out.printf("\nUnavailable room types:\n");
unavailableRoomType.forEach(System.out::println);
}
可用房间类型:标准
超级豪华
不可用的房间类型:
豪华型
在您的场景中,您可以使用
list.contains(roomType)
来验证列表中是否已有项目。另外,如果你不想要复制品,你可以使用SetI。我不明白你想实现什么。。。我真的不知道你的列表包含什么,但我想你最终会得到这两个列表的并集。@Vakh-yep我得到了另一个词messup中的并集,而不是filter this-yep,但实际上这些列表元素来自DB@Yasa我编辑了我的帖子以满足你的需要。但一般来说,我建议创建一个自己的类(RoomManager
e.g.),其中包含房间类型逻辑。如果你需要一些提示,请告诉我。
Set<String> roomTypes;
Set<RoomType> availableRoomType;
Set<RoomType> unavailableRoomType;
public static void main(String[] args) {
final Set<String> roomTypes = new LinkedHashSet<>();
final Set<String> availableRoomType = new LinkedHashSet<>();
final Set<String> unavailableRoomType = new LinkedHashSet<>();
roomTypes.add("Standard");
roomTypes.add("Deluxe");
roomTypes.add("SuperDeluxe");
// .. other entries
// determine what room types are available
availableRoomType.add("Standard");
availableRoomType.add("SuperDeluxe");
// your filtering for unavailable room types
roomTypes.stream()
.filter(e -> !availableRoomType.contains(e))
.forEach(unavailableRoomType::add);
System.out.printf("Available room types:\n");
availableRoomType.forEach(System.out::println);
System.out.printf("\nUnavailable room types:\n");
unavailableRoomType.forEach(System.out::println);
}