Java Arraylist度假村租赁

Java Arraylist度假村租赁,java,Java,当用户输入id和度假区代码时,如何在ArrayList中搜索并获取存储id和度假区代码的阵列号?我用的是for循环 for(Person pe: guestList) { if ( pe.getPersonId().equals(Id)) System.out.println(pe.toString()); } for(Resort re: resortList) { if ( re.getResortCode().equals(resortCode))

当用户输入id和度假区代码时,如何在ArrayList中搜索并获取存储id和度假区代码的阵列号?我用的是for循环

for(Person pe: guestList)
{
    if ( pe.getPersonId().equals(Id))   
        System.out.println(pe.toString());
}

for(Resort re: resortList)
{
    if ( re.getResortCode().equals(resortCode)) 
        System.out.println(re.toString());
}
代替手动输入:

Rental r1 = new Rental(guestList.get(2),resortList.get(3));
下面是我的完整程序

//create list of resort;
Chalet c1 = new Chalet("001","chalet1",90);
Chalet c2 = new Chalet("002","chalet2",90);
Chalet c3 = new Chalet("003","chalet3",85);
Chalet c4 = new Chalet("004","chalet4",80);
Chalet c5 = new Chalet("005","chalet5",80);
Chalet c6 = new Chalet("006","chalet6",70);

ArrayList <Resort> resortList = new ArrayList<Resort>();
resortList.add(c1);
resortList.add(c2);
resortList.add(c3);
resortList.add(c4);
resortList.add(c5);
resortList.add(c6);


//create list of guest
Person p1 = new Person("001","Alvin","88889999");
Person p2 = new Person("002","Bob","89889999");
Person p3 = new Person("003","Wendy ","98123456");

ArrayList <Person> guestList = new ArrayList<Person>();
guestList.add(p1);
guestList.add(p2);
guestList.add(p3);

Scanner console = new Scanner(System.in);

while(true){

    System.out.print("Enter your id: ");
    String id = console.nextLine();
    for(Person pe: guestList)
    {
        if ( pe.getPersonId().equals(id))
            System.out.println(pe.toString());

    }



    System.out.print("Enter resort code: ");
    String resortCode = console.nextLine();
    for(Resort re: resortList)
    {
        if ( re.getResortCode().equals(resortCode))
            System.out.println(re.toString());

    }

    Rental r1 = new Rental(guestList.get(2),resortList.get(3));
    System.out.println("");
    System.out.println(r1);
    System.out.println("");
    console.nextLine();
}
//创建度假村列表;
小屋c1=新的小屋(“001”,“小屋1”,90);
木屋c2=新木屋(“002”,“木屋2”,90);
小屋c3=新的小屋(“003”,“小屋3”,85);
小屋c4=新的小屋(“004”,“小屋4”,80);
小屋c5=新的小屋(“005”,“小屋5”,80);
小屋c6=新的小屋(“006”,“小屋6”,70);
ArrayList RestorList=新建ArrayList();
增加(c1);
增加(c2);
增加(c3);
增加(c4);
增加(c5);
增加(c6);
//创建来宾列表
人员p1=新人员(“001”、“阿尔文”、“8889999”);
人员p2=新人员(“002”、“Bob”、“89889999”);
人员p3=新人员(“003”、“Wendy”、“98123456”);
ArrayList guestList=新建ArrayList();
新增(p1);
添加访客列表(p2);
新增宾客名单(p3);
扫描仪控制台=新扫描仪(System.in);
while(true){
System.out.print(“输入您的id:”);
String id=console.nextLine();
个人(pe:guestList)
{
if(pe.getPersonId().equals(id))
System.out.println(pe.toString());
}
系统输出打印(“输入度假区代码:”);
字符串代码=console.nextLine();
适用于(度假区:度假区列表)
{
if(re.getRestorCode().equals(RestorCode))
System.out.println(re.toString());
}
租金r1=新租金(guestList.get(2),RestorList.get(3));
System.out.println(“”);
系统输出打印项次(r1);
System.out.println(“”);
console.nextLine();
}
非常感谢Jason C的解决方案。我完成了我的程序

    int guestIndex = -1; 

    for(int i = 0; i <guestList.size(); ++ i)
    {
        if ( guestList.get(i).getPersonId().equals(id)) {

          guestIndex = i;
        }
     }


    int resortIndex = -1; 
    for(int n = 0; n < resortList.size(); ++ n)
    {
      if ( resortList.get(n).getResortCode().equals(resortCode)) {
          System.out.println(re.toString());
          resortIndex = n; 
       }
    }

    Rental r1 = new Rental(guestList.get(guestIndex),resortList.get(resortIndex));
intguestindex=-1;

对于(int i=0;i而言,您似乎已经掌握了如何查找您要查找的项目的好方法。要存储该项目以供以后使用,只需在找到时将其粘贴到变量中即可

你现在有了这个:

for(Resort re: resortList)
{
    if ( re.getResortCode().equals(resortCode))
        System.out.println(re.toString());
}

Rental r1 = new Rental(guestList.get(2),resortList.get(3));
但是你可以这样做:

Rental r1 = null; // <= this is where we'll store the found object

for(Resort re: resortList)
{
    if ( re.getResortCode().equals(resortCode)) {
        System.out.println(re.toString());
        r1 = re; // <= keep track of the one we found
    }
}

// now r1 contains the found object, or null if not found
Map<Integer, Person> guestList = new HashMap<Integer, Person>();
Map<Integer, Chalet> resortList = new HashMap<Integer, Chalet>();

private void execute() {
    loadList();

    Scanner console = new Scanner(System.in);
    while (true) {
        System.out.print("Enter your id: ");
        String id = console.nextLine();

        Person pe = guestList.get(id);
        if (pe != null) {
            System.out.println(pe.getPersonId());
        } else {
            System.err.println("Person not found: " + id);
        }

        System.out.print("Enter resort code: ");
        String resortCode = console.nextLine();
        Chalet re = resortList.get(resortCode);
        if (re != null) {
            System.out.println(re.getId());
        } else {
            System.err.println("Resort Not found: " + id);
        }

        Rental r1 = new Rental(guestList.get(2), resortList.get(3));
        System.out.println("");
        System.out.println(r1);
        System.out.println("");
        console.nextLine();
    }

}

private void loadList() {
    guestList.put(1, new Person("001", "Alvin", "888999888"));
    guestList.put(2, new Person("002", "Bob", "89888999"));
    guestList.put(3, new Person("003", "Wendy", "989123345"));


    resortList.put(1, new Chalet("001", "chalet1", 90));
    resortList.put(2, new Chalet("002", "chalet2", 90));
    resortList.put(3, new Chalet("003", "chalet3", 85));
    resortList.put(4, new Chalet("004", "chalet4", 80));
    resortList.put(5, new Chalet("005", "chalet5", 80));
    resortList.put(6, new Chalet("006", "chalet6", 70));
}

Rental r1=null;//我不知道您的确切需求,但您可以使用HashMap将值存储为键值对。这可以减少您在满足此特定需求时的一些步骤

编辑 HashMap:HashMap是一种数据结构,允许您将数据存储在一个键值对中,因此您可以使用
get
方法从键值中获取值,对于您的情况,键值是客户id,值是客户。HashMap实现起来非常简单,请阅读下面的教程

教程:
文档:

只是为了添加到Nixit Patel中,解决方案……我认为它应该是这样的:

Rental r1 = null; // <= this is where we'll store the found object

for(Resort re: resortList)
{
    if ( re.getResortCode().equals(resortCode)) {
        System.out.println(re.toString());
        r1 = re; // <= keep track of the one we found
    }
}

// now r1 contains the found object, or null if not found
Map<Integer, Person> guestList = new HashMap<Integer, Person>();
Map<Integer, Chalet> resortList = new HashMap<Integer, Chalet>();

private void execute() {
    loadList();

    Scanner console = new Scanner(System.in);
    while (true) {
        System.out.print("Enter your id: ");
        String id = console.nextLine();

        Person pe = guestList.get(id);
        if (pe != null) {
            System.out.println(pe.getPersonId());
        } else {
            System.err.println("Person not found: " + id);
        }

        System.out.print("Enter resort code: ");
        String resortCode = console.nextLine();
        Chalet re = resortList.get(resortCode);
        if (re != null) {
            System.out.println(re.getId());
        } else {
            System.err.println("Resort Not found: " + id);
        }

        Rental r1 = new Rental(guestList.get(2), resortList.get(3));
        System.out.println("");
        System.out.println(r1);
        System.out.println("");
        console.nextLine();
    }

}

private void loadList() {
    guestList.put(1, new Person("001", "Alvin", "888999888"));
    guestList.put(2, new Person("002", "Bob", "89888999"));
    guestList.put(3, new Person("003", "Wendy", "989123345"));


    resortList.put(1, new Chalet("001", "chalet1", 90));
    resortList.put(2, new Chalet("002", "chalet2", 90));
    resortList.put(3, new Chalet("003", "chalet3", 85));
    resortList.put(4, new Chalet("004", "chalet4", 80));
    resortList.put(5, new Chalet("005", "chalet5", 80));
    resortList.put(6, new Chalet("006", "chalet6", 70));
}
Map guestList=newhashmap();
Map restorlist=newhashmap();
私有void execute(){
loadList();
扫描仪控制台=新扫描仪(System.in);
while(true){
System.out.print(“输入您的id:”);
String id=console.nextLine();
Person pe=guestList.get(id);
如果(pe!=null){
System.out.println(pe.getPersonId());
}否则{
System.err.println(“未找到人员:+id”);
}
系统输出打印(“输入度假区代码:”);
字符串代码=console.nextLine();
小屋re=RestorList.get(RestorCode);
如果(re!=null){
System.out.println(re.getId());
}否则{
System.err.println(“未找到度假村:+id”);
}
租金r1=新租金(guestList.get(2),RestorList.get(3));
System.out.println(“”);
系统输出打印项次(r1);
System.out.println(“”);
console.nextLine();
}
}
私有void加载列表(){
宾客名单(1,新人(“001”、“阿尔文”、“88899888”);
宾客名单(2,新人(“002”、“鲍勃”、“89888999”);
宾客名单(3,新人(“003”、“温迪”、“989123345”);
(1,新木屋(“001”,“木屋1”,90));
(2,新木屋(“002”,“木屋2”,90));
(3,新木屋(“003”,“木屋3”,85));
(4,新木屋(“004”,“木屋4”,80));
(5,新木屋(“005”,“木屋5”,80));
(6,新木屋(“006”,“木屋6”,70));
}

我需要RestorList和guestList in Rental您的第二种方法适合我的程序。非常感谢。我不知道如何使用HashMap谢谢您的编码