java - Arraylist - 度假村出租

标签 java

当用户输入id和resort code时,如何在ArrayList中搜索并获取id和resort code所在的数组编号?我正在使用 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();
}

非常感谢 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));

最佳答案

您似乎已经很好地掌握了如何找到您正在寻找的项目。要存储该项目供以后使用,只需在找到它时将其粘贴到变量中即可。

你现在有这个:

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

如果您想获取索引本身,使用标准 for 循环可能是最简单的方法:

int resortIndex = -1; // <= this is where we'll store the index

for(int n = 0; n < resortList.size(); ++ n)
{
    if ( resortList.get(n).getResortCode().equals(resortCode)) {
        System.out.println(re.toString());
        resortIndex = n; // <= keep track of the index
    }
}

// now resortIndex contains the index into the array, or -1 if not found

还有其他方法可以改进您的代码(例如 break 一旦找到该项目等),但这有点超出了这个答案的范围。

关于java - Arraylist - 度假村出租,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23039030/

相关文章:

java - 将整数显示为 Xs 的输出

Java 将文件中的行与 String 进行比较

java - 编译后的类文件在Java中保留了多少源代码信息?

使用线程的Java网络,当一个客户端离开另一个客户端时无法与服务器通信

java - 如何在 robomongo 中插入当前日期?

java - 如何使用 okhttp3 在 Android 中使用 Twitter Streaming API?

java - 从脚本启动 Spring boot 应用程序

Java并发: Can I create a pool using worker thread

java - Activemq如何配置消费者监听器(Java)

java - 在 eclipse 中作为 TestNG Suite 运行项目时如何生成 Allure xml?