Java 如何访问属于arraylist中对象的arraylist
我已经被困在同一个问题上好几天了,在谷歌上搜索了我能想到的一切,我放弃了。我想写一个程序,你应该先创建一个person对象,然后给这个人不同类型的物品。我把每个被创建的人放在一个arraylist中,每个人都应该有自己的清单,这也是一个arraylist。我只是不知道如何将项目添加到特定的persons arraylist以及如何打印该arraylist。每次创建一个新人时,我是否必须创建arraylist“Attowings”的新实例?我如何访问某个人arraylist?感谢任何形式的反馈,因为我是超级noobJava 如何访问属于arraylist中对象的arraylist,java,arraylist,Java,Arraylist,我已经被困在同一个问题上好几天了,在谷歌上搜索了我能想到的一切,我放弃了。我想写一个程序,你应该先创建一个person对象,然后给这个人不同类型的物品。我把每个被创建的人放在一个arraylist中,每个人都应该有自己的清单,这也是一个arraylist。我只是不知道如何将项目添加到特定的persons arraylist以及如何打印该arraylist。每次创建一个新人时,我是否必须创建arraylist“Attowings”的新实例?我如何访问某个人arraylist?感谢任何形式的反馈,因
import java.util.ArrayList;
public class Sakregister extends Programskelett{
public static ArrayList<Person> personList = new ArrayList<Person>();
protected boolean nextCommand(){
String command = readString("> ").toLowerCase();
switch(command){
case "print list":
printAll();
System.out.println("Program is running");
break;
case "print person":
printUser();
System.out.println("Program is running");
break;
case "create item":
newItem();
break;
case "create user":
newUser();
break;
case "print richest":
printRichest();
System.out.println("Program is running");
break;
case "crash":
initCrash();
break;
case "quit":
System.out.println("Program has terminated");
return true;
default:
System.out.println("Not a valid command");
}
return false;
}
private void printAll() {
}
private void initCrash() {
for (Person thisPerson : personList) {
for (Item thisItem : thisPerson.belongings)
if (thisItem.name == "Stock"){
((Stock) thisItem).setStockCrash(0);
}
}
}
private void printRichest() {
}
private void newUser() {
System.out.println("enter name: ");
String name = keyboard.nextLine();
Person newPerson = new Person(name);
personList.add(newPerson);
System.out.println("Person added to list");
}
private boolean newItem() {
System.out.println("enter item type: ");
String itemType = readString("> ").toLowerCase();
switch(itemType){
case "trinket":
addTrinket();
break;
case "stock":
addStock();
break;
case "appliance":
addAppliance();
return true;
default:
System.out.println("Not a valid item type");
}
return false;
}
private void addAppliance() {
System.out.println("Enter name of appliance: ");
String appName = keyboard.nextLine();
System.out.println("Enter initial price: ");
int appInitialPrice = keyboard.nextInt();
System.out.println("Enter level of wear: ");
int appWear = keyboard.nextInt();
Appliance newAppliance = new Appliance(appName, appInitialPrice, appWear);
System.out.println("Enter name of owner: ");
Object owner = keyboard.nextLine();
for(Person entry : personList)
if(entry.equals(owner))
entry.belongings.add(newAppliance);
}
private void addStock() {
System.out.println("Enter name of stock entry: ");
String stockName = keyboard.nextLine();
System.out.println("Enter amount: ");
int stockAmount = keyboard.nextInt();
System.out.println("Enter price: ");
int stockPrice = keyboard.nextInt();
Stock newStock = new Stock(stockName, stockAmount, stockPrice);
System.out.println("Enter name of owner: ");
String owner = keyboard.nextLine();
keyboard.nextLine();
for(Person entry : personList) {
if(entry.equals(owner)) {
entry.belongings.add(newStock);
}
}
}
private void addTrinket() {
System.out.println("Enter name of trinket: ");
String trinketName = keyboard.nextLine();
System.out.println("Enter number of gems: ");
int trinketGems = keyboard.nextInt();
System.out.println("Choose gold or silver: ");
String trinketMineral = keyboard.nextLine();
keyboard.nextLine();
Trinket newTrinket = new Trinket(trinketName, trinketGems, trinketMineral);
System.out.println("Enter name of owner: ");
String owner = keyboard.nextLine();
for(Person entry : personList)
if(entry.equals(owner))
entry.belongings.add(newTrinket);
}
private void printUser() {
// TODO Auto-generated method stub
}
protected void printMainMenu(){
System.out.println("Choose a command: ");
System.out.println("start");
System.out.println("quit");
}
public static void main(String[] args) {
Sakregister registerProgram = new Sakregister();
registerProgram.run();
}
}
public class Item{
protected String name;
public Item(String name){
this.name = name;
}
public String getItemName() {
return name;
}
import java.util.ArrayList;
public class Person{
public String name;
public String items;
public ArrayList<Item> belongings = new ArrayList<Item>();
public Person(String name){
this.name = name;
}
public String getName(){
return name;
}
public String toString() {
return "Name: " + name;
}
}
每次创建新的Person对象时,都会创建ArrayList属性的新实例,因此无需在任何地方再次创建它。但是,目前没有物品的getter,所以您需要编写一个getter来访问给定人员的物品。你想要这样的东西:
public ArrayList<Item> getBelongings() {
return belongings;
}
您需要编写一个公共方法来接受Item对象并将其添加到此人的物品中。编写另一个公共方法,直接在物品上调用System.out.println,或者遍历物品并将其打印出来,您不需要任何帮助。我只是不知道如何将项目添加到特定的persons arraylist以及如何打印该arraylist 您的人员位于personList中,因此我将使用personList.getn获取第n个人员。 要将项目添加到物品中,可以使用personList.getn.Bottongs.additem 要打印arraylist,可以使用普通foreach循环:
for(Item i:personList.get(n).belongings){
System.out.println(i.getItemName());
}
每次创建一个新人时,我是否必须创建arraylist“Attowings”的新实例
ArrayList属性是Person类中的一个字段。使用构造函数创建person时,其所有字段和变量都在内存中创建。每次创建一个人时都会发生这种情况,因此personList中的每个对象person都有自己的字段,如“个人物品”列表。这看起来像是家庭作业。getn仅适用于索引,对吗?如果我只知道某人的姓名,如何访问他们?您可以在数组中搜索以找到具有正确姓名的人:forPerson p:personList{ifp.getName.equalPerson{//do something}