当用户输入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/