【问题标题】:Creating an arraylist of nulls and then setting the index to an object创建一个空值数组列表,然后将索引设置为一个对象
【发布时间】:2015-02-02 08:23:29
【问题描述】:

真的需要帮助,因为病人没有被设置为替换空值。我们必须创建一个包含 50 个空值的数组列表,以便迭代器遍历该列表,如果它找到一个空值,它将把它设置给患者。问题是没有患者被设置为空值。最后我们也要返回床号。

protected int amountOfBeds = 50;
ArrayList<Patient> bedList = new ArrayList<Patient>(amountOfBeds);    

public int admitPatient(Patient illPatient) {
    int index = -1;
    if(illPatient.getAge() > 0 && amountOfBeds > size()) {
        //if it is null then set to patient 
        //if it not null then we assume its a patient so we skip

        Iterator<Patient> itr = bedList.iterator();
        try{
            while(itr.hasNext()) {

                int bedIndex = bedList.indexOf(itr.next()); 
                if(bedList.get(bedIndex).equals(null)) {
                    bedList.set(bedIndex, illPatient);
                    index = bedIndex +1;
                    break;
                }
            }
        }catch(NullPointerException e) {
            e.getMessage();
        }
    }
    return index;
}

【问题讨论】:

  • 为了等于null,不要使用equals(null),而是使用== null
  • 您为什么要这样做,而不是简单地让您的列表随着您添加患者并使用bedList.add(illPatient)而增加?
  • 谢谢 geet3 那是什么问题!非常感谢!

标签: java arraylist indexing iterator listiterator


【解决方案1】:

创建 50 个空值列表的简单方法是这样的

    List<Patient> list = Collections.nCopies(50, null);

找到空索引的快速方法是这个

    int i = list.indexOf(null);

【讨论】:

    【解决方案2】:

    在 Java 中,ArrayList 基本上是一个数组,可以在执行期间更改其大小。由于您似乎有固定数量的床位,因此在这里排列可能会更好。

    构造函数new ArrayList(50) 不会创建一个包含 50 个元素的 ArrayList。它创建了一个空的 ArrayList,但给 Java 一个“提示,可能会在 ArrayList 中插入 50 个元素。如果您不给出这样的提示,则 ArrayList 开始时空间很小,并且会定期变大,如果它得到太小太容纳你想要插入的所有项目。这需要时间,所以如果你已经知道要插入多少项目(即使你只知道大概),这个构造函数会让你的代码更快。

    但是,您必须考虑是否真的需要按照自己想要的方式执行此操作。有一个空的 ArrayList 不是更简单,您可以根据需要向其中添加或删除元素(无需复杂的逻辑,将 null 替换为元素。然后您可以添加 if (array.size() &gt;= 50) // it is full, so some special case may be needed here确保数组中的元素永远不会比您想要的多。

    【讨论】:

      猜你喜欢
      • 2015-02-16
      • 2020-08-12
      • 2021-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-05
      • 2013-06-11
      • 1970-01-01
      相关资源
      最近更新 更多