数组if语句并打印数组

时间:2016-03-31 06:50:57

标签: java arrays arraylist

我有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”

3 个答案:

答案 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);