ArrayList - 可以读出元素名称吗?

时间:2015-03-05 09:46:00

标签: java arraylist

Heyho大家!

我的项目有点大,所以我决定将它缩短一点,只显示我目前的问题代码。首先,在控制台上进行im编程。从扫描仪中读取六个字符串,然后将它们保存在一个变量中,我正在进行有效性检查(长度,特殊标志等)。所以我决定用额外的方法check_newCustomer()来做这个。我使用ArrayList作为一个值返回更多。所以现在我需要在main()函数中捕获输入或者在数据库中编写新Customer的任何其他方法。问题是现在我不知道如何在其他方法中引用userID,firstname,secondname ....我只能用索引来引用。但是当我可以使用变量名称来引用它时,我更喜欢它。所以在其他方法上处理字符串要容易得多。可能?

public static void main(String[] args) {
    ArrayList<String> newCustomer = new ArrayList<String>(); 
    check_newCustomer (newCustomer);
}


public static void check_newCustomer(ArrayList<String> newCustomer) throws IOException {
    String userID = null;
    String firstname = null;
    String secondname = null;
    String street = null;
    String zipcode = null;
    String city = null;

    // validity check before I fill the input fields
    ...

    // fill arraylist
    newCustomer.add(userID);
    newCustomer.add(firstname);
    newCustomer.add(secondname);
    newCustomer.add(street);
    newCustomer.add(zipcode);
    newCustomer.add(village);
}

谢谢!

3 个答案:

答案 0 :(得分:7)

不,ArrayList中的值只是引用。您最初使用不同变量引用它的事实是无关紧要的。

可以使用Map<String, String>而不是...但是很多更清洁,因为有一个Customer类,其中包含各种信息。如果您想要多个客户,则可以拥有List<Customer>

答案 1 :(得分:1)

需要创建一个Customer类,只需要一组字段。而不是字符串列表。

public class Customer {
    String userID;
    String firstname;
    String secondname;
    String street;
    String zipcode;
    String city;
}

在代码中:

Customer newCustomer = new Customer();
newCustomer.userID = ....
System.out.println(newCustomer.userID);

答案 2 :(得分:0)

当您传递check_newCustomer (newCustomer);时,您只传递数组列表的副本。在这种情况下,原始数组列表newcustomer保持不变,而范围在方法check_newCustomer中的新副本是存储所有字符串的位置。您可以为Customers创建一个新类,也可以创建一个类,并将您的数组列表作为类变量,并将check_newCustomer作为类方法。在后一种情况下,它很简单。

    class customer
        ArrayList<String> newCustomer;
        public static void main(String[] args) {

                newCustomer = new ArrayList<String>(); 
                check_newCustomer ();
            }


        public static void check_newCustomer() throws IOException {
                String userID = null;
                String firstname = null;
                String secondname = null;
                String street = null;
                String zipcode = null;
                String city = null;

                // validity check before I fill the input fields
                ...

                // fill arraylist
                newCustomer.add(userID);
                newCustomer.add(firstname);
                newCustomer.add(secondname);
                newCustomer.add(street);
                newCustomer.add(zipcode);
                newCustomer.add(village);
                }
}

这必须有效。