在java的arraylist中更新特定记录时遇到问题

在java的arraylist中更新特定记录时遇到问题,java,Java,好的,我制作了一个程序,将患者的信息存储在一个数组中,然后要求用户输入患者的ID,根据该ID,特定患者的记录将显示在屏幕上。现在我必须更新用户输入ID的患者记录,但我不知道使用哪种语句以及如何使用它。。我相信我可以使用“添加和删除”,但我不太确定。。这是我的节目:- 就在if(up==1)之后,我在思考该做什么时遇到了问题 package samplee.java; import java.util.*; public class patient$ { public static

好的,我制作了一个程序,将患者的信息存储在一个数组中,然后要求用户输入患者的ID,根据该ID,特定患者的记录将显示在屏幕上。现在我必须更新用户输入ID的患者记录,但我不知道使用哪种语句以及如何使用它。。我相信我可以使用“添加和删除”,但我不太确定。。这是我的节目:- 就在if(up==1)之后,我在思考该做什么时遇到了问题

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方法来修改它的值。