我有ArrayList
我希望将对象存储在(字符串)中。我有一个构建的构造函数(int,string,string),但我不确定我是否正确填充了arraylist的值:
ArrayList<Object> list = new ArrayList<Object>();
list.add(Account);
另外,一旦我让这个数组正确填充,我希望能够使用if语句或任何最好的方法打印值。
所以如果数组中的每个项都是int
,str1,str2格式,如果int = 1 system.print“黄色”,如果str1是“b”,则system.print“ice”,和如果str2是“c”,则system.print“green”
答案 0 :(得分:1)
使用最窄的类型定义集合总是一个好主意。在这种情况下,您的ArrayList
应定义为Account
个对象的集合,而不是Object
的集合。
例如:
List<Account> allAccounts = new ArrayList<>();
allAccounts.add(new Account(1, "a", "x"));
allAccounts.add(new Account(2, "b", "y"));
allAccounts.add(new Account(3, "c", "z"));
要遍历帐户,您可以使用以下语法:
for (Account account : allAccounts) {
if (account.id() == 1) {
System.out.println("yellow");
}
if ("b".equals(account.name())) {
System.out.println("ice");
}
if ("c".equals(account.description())) {
System.out.println("green");
}
}
所有这些假设您有一个类似于此的Account类:
public class Account {
private final int id;
private final String name;
private final String description;
public Account(int id, String name, String description) {
this.id = id;
this.name = name;
this.description = description;
}
public int id() {
return id;
}
public String name() {
return name;
}
public String description() {
return description;
}
}
答案 1 :(得分:0)
根据我的理解,
Account
实例具有包含整数字段的字段变量和两个字符串字段
//Use a List of Account instead of List of Object
List<Account> accounts = new ArrayList<>()
//Add the account objects you need
accounts.add(new Account(1 , "str1" , "str2"))
for(Account account : accounts){
if(account.int1 == 1){
System.out.println("Yellow");
}
if(account.str1.equals("b")){
System.out.println("ice");
}
if(account.str2.equals("c")){
System.out.println("green");
}
}
答案 2 :(得分:0)
除了aetheria的回答,如果应该打印的是Account对象本身的逻辑,您可以考虑覆盖toString
方法。
类似的东西:
@Override
public String toString() {
return String.format("%s%s%s", (this.id == 1 ? "Yellow " : ""), (this.name.equals("a") ? "Ice " : ""), (this.description.equals("b") ? "Green" : ""));
}
如果你这样做,那么你可以这样做:
for (Account account : accounts) {
System.out.println(account);
}
或System.out.println(accounts);