在java的arraylist中更新特定记录时遇到问题
好的,我制作了一个程序,将患者的信息存储在一个数组中,然后要求用户输入患者的ID,根据该ID,特定患者的记录将显示在屏幕上。现在我必须更新用户输入ID的患者记录,但我不知道使用哪种语句以及如何使用它。。我相信我可以使用“添加和删除”,但我不太确定。。这是我的节目:- 就在if(up==1)之后,我在思考该做什么时遇到了问题在java的arraylist中更新特定记录时遇到问题,java,Java,好的,我制作了一个程序,将患者的信息存储在一个数组中,然后要求用户输入患者的ID,根据该ID,特定患者的记录将显示在屏幕上。现在我必须更新用户输入ID的患者记录,但我不知道使用哪种语句以及如何使用它。。我相信我可以使用“添加和删除”,但我不太确定。。这是我的节目:- 就在if(up==1)之后,我在思考该做什么时遇到了问题 package samplee.java; import java.util.*; public class patient$ { public static
package samplee.java;
import java.util.*;
public class patient$ {
public static void main(String[] args) {
ArrayList<patientss> patient1 = new ArrayList<patientss>();
Scanner src = new Scanner(System.in);
Scanner sc = new Scanner(System.in);
Scanner stc = new Scanner(System.in);
Scanner sdc = new Scanner(System.in);
Scanner update = new Scanner(System.in);
int id, it, num, i;
String name;
int ages;
int id1;
Boolean leave = false;
while (!leave) {
patientss xx = new patientss();
System.out.println("Enter the patient's ID ");
System.out.println("-1 to finish entering");
id = src.nextInt();
if (id != -1) {
xx.setId(id);
}
System.out.println("Enter the patient's name ");
System.out.println("-1 to finish entering");
name = stc.next();
if (id != -1) {
xx.setName(name);
patient1.add(xx);
}
System.out.println("Enter the patient's phone number");
System.out.println("-1 to finish entering");
num = sdc.nextInt();
if (id != -1) {
xx.setNum(num);
patient1.add(xx);
} else {
leave = true;
}//Escape the while loop.
}
System.out.println("Enter the id of a student");
it = sc.nextInt();
patientss tt = new patientss();
for (i = 0; i < patient1.size(); i++) {
tt = patient1.get(i);
if (it == tt.getId())
System.out.println(tt.toString());
break;
}
System.out.println("Enter the id of the student you want to update");
Scanner id11 = new Scanner(System.in);
id1 = id11.nextInt();
int up, id2;
patientss dd = new patientss();
for (i = 0; i < patient1.size(); i++) {
dd = patient1.get(i);
if (id1 == dd.getId()) {
System.out.println("If you want to change the name, type 1");
System.out.println("If you want to change the number, type 2");
System.out.println("If you want to change the id, type 3");
up = update.nextInt();
if (up == 1) {
}
}
}
}
}
请考虑使用<代码> HashMap <代码>,而不是<代码> ARAYLISTAB/COD>。通过这种方式,您可以轻松查找具有id的患者
HashMap已经获取并放置了可以用来检索和更新对象的实现。
< P>请考虑使用<代码> HashMap <代码>,而不是<代码> ARARYLIST//C>。通过这种方式,您可以轻松查找具有id的患者HashMap有get和put实现,您可以使用它来检索和更新对象。好吧,如果您想使用ArrayList,它是可以的,但是正如@Yogidlip所写的,如果您需要按Id搜索对象,最好的方法是使用HashMap。。。但你的问题的答案如下: 例如,您需要有一个循环方法来搜索列表中的Id
//Object to update
patientss patientToUpdate;
for(patientss patient : patient1){ //ObjectType currentObject : ListName
if(patient.getId() = inputId){
//Object found
patientToUpdate = patient;
//End for when found
break;
}
}
然后,变量patientToUpdate中有对象,可以在属性中设置新值
希望它能对您有所帮助。好吧,如果您想使用ArrayList,这没关系,但正如@Yogidlip所写的,如果您需要按Id搜索对象,最好的方法是使用HashMap。。。但你的问题的答案如下: 例如,您需要有一个循环方法来搜索列表中的Id
//Object to update
patientss patientToUpdate;
for(patientss patient : patient1){ //ObjectType currentObject : ListName
if(patient.getId() = inputId){
//Object found
patientToUpdate = patient;
//End for when found
break;
}
}
然后,变量patientToUpdate中有对象,可以在属性中设置新值
希望它能对您有所帮助。您不需要为
System.in
提供五个Scanner
实例。只用一个,你的缩进严重弄乱了。请修复此问题,您的代码无法读取(例如,查看第一个if
)。另外:为什么在同一输入流上有5个扫描仪?您已经将患者提取到变量dd
。因此,使用它来调用它的setter方法来修改它的值。对于System.in
,您不需要五个Scanner
实例。只用一个,你的缩进严重弄乱了。请修复此问题,您的代码无法读取(例如,查看第一个if
)。另外:为什么在同一输入流上有5个扫描仪?您已经将患者提取到变量dd
。所以使用它来调用它的setter方法来修改它的值。