【问题标题】:Java classes and ArrayList clarification [closed]Java 类和 ArrayList 说明 [关闭]
【发布时间】:2013-02-01 01:14:04
【问题描述】:

我创建了一个 Java 类,我正在尝试了解 ArrayList 的工作原理。

假设我有一个名为Complex 的*课程。在那个类中,我们有 HousesEmployees 等,所有这些都是单独的类。

如果我想创建一个ArrayList,我该怎么做?

元素的数量是动态的,所以当有人说要添加新房子时,我会调用该方法来询问与房子有关的问题,然后它将所有这些都添加到我假设的列表中?

【问题讨论】:

标签: java arrays list class arraylist


【解决方案1】:

试试这个。我会把主要的写作留给你;)

import java.util.ArrayList;


public class Complex {
    private ArrayList<House> houses;
    private ArrayList<Employee> employees;

    public void addEmployee(String firstName, String secondName, boolean lazy){
        if(employees == null)
            employees = new ArrayList<Complex.Employee>();

        employees.add(new Employee(firstName, secondName, lazy));
    }

    public void addHouse(String color, boolean withRoof){
        if(houses == null)
            houses = new ArrayList<Complex.House>();

        houses.add(new House(color, withRoof));
    }

    class House{
        private String color;
        private boolean withRoof;
        public String getColor() {
            return color;
        }
        public void setColor(String color) {
            this.color = color;
        }
        public boolean isWithRoof() {
            return withRoof;
        }
        public void setWithRoof(boolean withRoof) {
            this.withRoof = withRoof;
        }
        public House(String color, boolean withRoof) {
            super();
            this.color = color;
            this.withRoof = withRoof;
        }


    }

    class Employee{
        private String firstName;
        private String secondName;
        boolean lazy;
        public String getFirstName() {
            return firstName;
        }
        public void setFirstName(String firstName) {
            this.firstName = firstName;
        }
        public String getSecondName() {
            return secondName;
        }
        public void setSecondName(String secondName) {
            this.secondName = secondName;
        }
        public boolean isLazy() {
            return lazy;
        }
        public void setLazy(boolean lazy) {
            this.lazy = lazy;
        }
        public Employee(String firstName, String secondName, boolean lazy) {
            super();
            this.firstName = firstName;
            this.secondName = secondName;
            this.lazy = lazy;
        }


    }
}

【讨论】:

  • Complex#AddEmployee 和 Complex#AddHouse 都应该是驼峰式的。
  • 显然我每天做 c# sharp 8 小时。 ;) 我会编辑。
【解决方案2】:

要创建一个ArrayList 来保存House 类型的对象,您可以这样做:

ArrayList<House> houseList = new ArrayList<House>();

houseList.add(new House());

遍历列表中的所有项目

for(House house:houseList){
   // do something with the house object
}

查看the documentation了解其他功能。

【讨论】:

  • 注意事项:如果使用增强的for循环,则不能在循环中删除或添加元素。我看到很多人这样做,然后想知道他们为什么会出错。