我有一个借用者类,它由一个名字组成,然后它还存储一个充满了该人借来的物品的arraylist。
我希望能够从我的main创建此类的多个实例,然后能够访问它们以查看他们借用的项目。
我无法理解如何创建多个实例。我只是一直在讨论覆盖Borrowed类的问题。
所以在下面的代码中,如果我创建newBorrower(“Tim”)然后addItem(“Wrench”),然后去创建newBorrower(“john”),那么我将覆盖newBorrower。
我希望能够根据用户输入创建多个Borrower实例吗?
我试过保存整个Borrower类。我不确定这是否可行,因为它不会排序所以我不能添加多个名称或者我收到错误。
借款人类
public class Borrower
{
protected String name;
protected String item;
ArrayList<String> itemList = new ArrayList<String>();
public Borrower()
{
}
public Borrower(String name)
{
this.name = name;
}
public String getName()
{
return name;
}
public void addItem(String item)
{
this.item = item;
itemList.add(item);
}
主类
public class WhoBorrowedIt
{
public static void main(String[] args)
{
ArraySortedList<String> borrowersList = new ArraySortedList<String>();
Borrower newBorrower = new Borrower();
Borrower otherBorrower = new Borrower();
Scanner inName = new Scanner(System.in);
Scanner inItem = new Scanner(System.in);
String item;
String name;
String menu;
int option;
menu = "Make a selection: " + "\n"
+ "1. Add Borrower" + "\n"
+ "2. Add Item Borrowed" + "\n"
+ "3. Remove Item Returned" + "\n"
+ "4. View Borrowers" + "\n"
+ "5. Exit";
do
{
Scanner in = new Scanner(System.in);
System.out.println(menu);
option = in.nextInt();
switch(option)
{
case 1: //create borrower
{
System.out.println("Enter Name");
name = inName.nextLine();
newBorrower = new Borrower(name);
borrowersList.add(newBorrower.getName());
break;
}
case 2: //add items
{
System.out.println("Enter item");
item = inItem.nextLine();
System.out.println("Who is borrowing");
name = inName.nextLine();
if(borrowersList.contains(name))
{
newBorrower.addItem(item);
}
else
{
newBorrower = new Borrower(name);
borrowersList.add(newBorrower.getName());
newBorrower.addItem(item);
}
}
}while(option != 5)
}
}
答案 0 :(得分:2)
使用Map
这样的
if (borrowersMap.containsKey(name))
{
borrowersMap.get(name).addItem(item)
}
else
{
newBorrower = new Borrower(name);
borrowersMap.put(newBorrower.getName(), newBorrower);
newBorrower.addItem(item);
}
其中borrowersMap
是HashMap
Map<String, Borrower> borrowersMap = new HashMap<String, Borrower>();
答案 1 :(得分:0)
您可以将列表更改为
List<Borrower> borrowerList = new ArraySortedList<Borrower>();
然后在您的程序中添加一个按名称获取借款人的方法
private Borrower getBorrowerByName( String borrowerName ){
for( Borrower borrower : borrowerList ){
if( borrower.getName().equalsIgnoreCase( borrowerName ) ){
return borrower;
}
}
return null;
}
然后当您创建新借用者时,将其添加到列表中 - 当您获得现有借用者时,您可以使用该方法并在向其添加项目之前检查null
。