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