更新ArrayList项的特定属性

Sha*_*men 5 java arraylist

项目已name,price,condition属性.我想保留price,condition但更换name.

现在我通过创建新对象来解决这个问题,但我认为这不是最佳选择.我只想更改ArrayList项的一个字段

public void modify(String name) {
    for (Item i : item) {
        if (i.getName().equalsIgnoreCase(name)) {
            int position = item.indexOf(i);
            System.out.println("New name: ");
            String newName = in.nextLine();
            Item updated = new Item(newName, i.getPrice(), i.getCondition(), i.getSize());
            item.set(position, updated);

        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Rus*_*lan 7

您不必插入新项目 ArrayList

public void modify(String name) {
    for (Item i : item) {
        if (i.getName().equalsIgnoreCase(name)) {
            System.out.println("New name: ");
            String newName = in.nextLine();
            i.setName(newName);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

假设你已经为每个字段设置了方法.然后你可以这样更新名称,价格,尺寸


Mar*_*oun 6

您可以updateNameItem类中拥有一个方法,然后只更新对象的名称:

item.get(index).updateName(newName);
Run Code Online (Sandbox Code Playgroud)

item.get(index)返回一个Item对象,您可以在该对象上应用该updateName方法.

  • @Sharkmen每次要修改属性时都不必构造新对象.这就是你有"制定者"的原因.而不是`updateName`你可以称之为`setName`. (2认同)