Java Arraylist度假村租赁
当用户输入id和度假区代码时,如何在ArrayList中搜索并获取存储id和度假区代码的阵列号?我用的是for循环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))
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谢谢您的编码