Java 如何按名称删除arraylist room中的房间?

Java 如何按名称删除arraylist room中的房间?,java,arraylist,Java,Arraylist,我在学java。我在java程序中遇到arraylist问题。如何删除arraylist in room中的房间并计算大小小于40的房间数。我刚刚在MyRoom类中编码了removeRoom和countRoomBySize两种方法。我的代码在网络bean中有错误。有人帮我查一下这个密码吗。非常感谢。这是我的密码 我的主课 public class MyMain { public static void main(String[] args) { //create a list of r

我在学java。我在java程序中遇到arraylist问题。如何删除arraylist in room中的房间并计算大小小于40的房间数。我刚刚在MyRoom类中编码了removeRoom和countRoomBySize两种方法。我的代码在网络bean中有错误。有人帮我查一下这个密码吗。非常感谢。这是我的密码 我的主课

public class MyMain { 
public static void main(String[] args) {
    //create a list of rooms
    MyRoom m = new MyRoom();

    m.addRoom(new Room("HB201L",35));
    m.addRoom(new Room("HB401R",45));
    m.addRoom(new Room("211",30));

    m.sort();
    m.list();

    //1.
    m.removeRoom("211");
    m.list();


    //2.
    int c = m.countRoomBySize(40);
    System.out.println(c);//2
}   
}
教室

public class Room implements Comparable<Room> {
@Override
public int compareTo(Room o) {
    return o.name.compareToIgnoreCase(this.name);
}
//instanced variables
private int size;  
private String name;

public Room() {
    name = "";
    size = 0;
}

public Room(String name, int size) {
    this.name = name;
    this.size = size;
}

public int getSize() {
    return size;
}

public void setSize(int size) {
    this.size = size;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}   
}
教室

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
public class MyRoom implements IRoom {

List<Room> rooms;

public MyRoom() {
    rooms = new ArrayList();
}

@Override
public void addRoom(Room r) {
    //append r to the end of list rooms
    rooms.add(r);
}

@Override
public void list() {
    for (int i = 0; i < rooms.size(); i++) {
        Room r = rooms.get(i);
        System.out.printf("%-20s%-10d\n",r.getName(),r.getSize());
    }
}

@Override
public void removeRoom(){
    for (int i = 0; i < rooms.size(); i++) {
        if(rooms.get(i).getName() == "211")
            rooms.remove(rooms);
    }
}

@Override
public int countRoomBySize(){
     int s,i,n;
 n = rooms.size();
 s = 0;
 for(i=0;i<n;i++) {
   if(rooms.get(i).getSize() > 40) 
       s++;  
 }
 return(s); 
}

public void sort() {
    Collections.sort(rooms);
}   
}

Interface IRoom
public interface IRoom {
//only contain public members: constants and method declaration
public final int MAX = 10;
public void addRoom(Room r);
public void list();
public void removeRoom();
public int countRoomBySize();
}
interface A {
void f();
} 
interface B extends A {
void g();
}
interface C {}

很高兴您开始学习java

这里最简单的解决方案是将您的房间放在Hashmap中,并将房间号存储为键

public class MyMain { 
public static void main(String[] args) {

    Hashmap<String,Room> rooms = new Hashmap();
    rooms.add("211",new Room("HB201L",35);
    rooms.add("HB401R",new Room("HB401R",45);

    rooms.remove("211");
    int size = rooms.size();
    int smallRooms = calculateSmallRooms(rooms.values(),30);
    }


    private int calculateSmallRooms(Collection<Room> rooms, int minimalSize) {
    int smallRooms = 0;
    for(Room room: rooms) {
        if (room.size < minimalSize) {
          smallRooms++;
        }
    return smallRooms;
    }

Removeoom可以缩短为:rooms.Removeooms.indexOf211,甚至可以缩短为rooms.remove211

首先更改界面IRoom,如下所示:

public void removeRoom(String name);
public int countRoomBySize(int size);
@Override
public void removeRoom(String name){
    for (int i = 0; i < rooms.size(); i++) {
        if(name.equalsIgnoreCase(rooms.get(i).getName())){
            rooms.removeIf(r -> r.getName().equals(name));
            System.out.println("Removed !");
        }
    }
}
@Override
public int countRoomBySize( int size){
     int s,i,n;
 n = rooms.size();
 s = 0;
 for(i=0;i<n;i++) {
   if(rooms.get(i).getSize() > size) 
       s++;  
 }
 return(s); 
}
在MyRoom类的方法中,如下所示:

public void removeRoom(String name);
public int countRoomBySize(int size);
@Override
public void removeRoom(String name){
    for (int i = 0; i < rooms.size(); i++) {
        if(name.equalsIgnoreCase(rooms.get(i).getName())){
            rooms.removeIf(r -> r.getName().equals(name));
            System.out.println("Removed !");
        }
    }
}
@Override
public int countRoomBySize( int size){
     int s,i,n;
 n = rooms.size();
 s = 0;
 for(i=0;i<n;i++) {
   if(rooms.get(i).getSize() > size) 
       s++;  
 }
 return(s); 
}
countRoomBySize方法如下:

public void removeRoom(String name);
public int countRoomBySize(int size);
@Override
public void removeRoom(String name){
    for (int i = 0; i < rooms.size(); i++) {
        if(name.equalsIgnoreCase(rooms.get(i).getName())){
            rooms.removeIf(r -> r.getName().equals(name));
            System.out.println("Removed !");
        }
    }
}
@Override
public int countRoomBySize( int size){
     int s,i,n;
 n = rooms.size();
 s = 0;
 for(i=0;i<n;i++) {
   if(rooms.get(i).getSize() > size) 
       s++;  
 }
 return(s); 
}

祝你好运

rooms.removiefr->r.name.equalsWhather;。MyRoom.removeRoom仅适用于名称为211的房间。最好将房间名称作为removeRoom的一个参数。您到底遇到了什么问题?您是否收到错误消息?输出是否不是您所期望的?请编辑您的问题并添加此信息。非常感谢,我将学习HashMap,但我正在尝试使用ArrayList