java - 更改 ArrayDeque 中元素的值

标签 java element arraydeque

现在我对 ArrayDeque 指定元素有问题。

Storages.add(new Storage("Furniture storage", 5, 58));

首先是存储类型。下一层 - 楼层,最后一个是门号。

现在我想将特定的 ArrayDeque 元素 Floor 更改为另一个元素。

例如来自第二个列表项

Meat storage    1   18

Meat storage    7   18      

这是我的主课

ArrayDeque<Storage> Storages = new ArrayDeque<Storage>();
Storage storage_obj = new Storage();

Storages.add(new Storage("Furniture storage", 5, 58));
Storages.add(new Storage("Meat storage", 1, 18));
Storages.add(new Storage("Hardware storage", 4, 41));
Storages.add(new Storage("Technique storage", 2, 27));
Storages.add(new Storage("Vegetable storage", 8, 88));

Storages[1] = storage_obj.setFloor(7);

System.out.println("Whole storages list");
outputStorages(Storages);

有存储类

    public class Storage {
        private String type;
        private int floor;
        private int doorNumber;


        public Storage(){
            this("------", 0,0);
}
    public Storage(String type_t, int floor_t, int doorNumber_t){
        type = type_t;
        floor = floor_t;
        doorNumber = doorNumber_t;
    }

    void setType(String type){
        this.type = type;
    }
    String getType(){
        return this.type;
    }

    void setFloor(int floor){
        this.floor = floor;
    }
    int getFloor(){
        return this.floor;
    }

    void setDoorNumber(int doorNumber){
        this.doorNumber = doorNumber;
    }
    int getDoorNumber(){
        return this.doorNumber;
    }
}

P.s.不要因为我的语法而评判我,英语不是我的母语^^

最佳答案

您的代码存在几个问题。我会尝试一步一步地评论它们:

ArrayDeque<Storage> Storages = new ArrayDeque<Storage>();

1) 您使用 ArrayDeque 有什么原因吗?您需要双端队列行为吗?或者您只需要一个集合?在后一种情况下,我建议只使用 ArrayList。

2) naming convention for the Java programming language指定变量始终以小写字符开头。

3) 最好只使用接口(interface)类型来声明变量(以及参数和方法),这样您就可以明确将使用哪个接口(interface)。

总而言之,我会这样写:

Collection<Storage> storages = new ArrayList<Storage>();

下一步...

Storages[1] = storage_obj.setFloor(7);

这不能编译。您的 Storage 类声明了具有以下签名的 setFloor 方法:

void setFloor(int floor)

这意味着,您的方法 setFloor 不会返回任何内容;因此没有任何可以分配的内容。

此外,变量 Storages 不是数组。因此,您无法使用括号 [] 访问第一个元素。

实际有效的是以下代码,您可以使用它来更改集合中的第一个元素:

storages.get(0).setFloor(7);

请注意,我已经使用了重命名的变量。

其他:您的 Storage 类声明了一个无参数构造函数,它设置了一些默认值。强制此类类的用户传递合理的值也是一种很好的做法。因此,我建议删除无参数构造函数,只保留另一个构造函数,后者应该对传入参数进行一些检查(例如检查类型是否为 null)。

关于java - 更改 ArrayDeque 中元素的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17613824/

相关文章:

java - 应用程序崩溃后,Android studio 中的清理项目和几个选项被禁用

ant - 在 Ant 中在运行时创建一个具有动态内容的 Union 和 Macrodef 样式的元素

java - 如何获取 ArrayDeQue 的子列表?

java - 为什么 ArrayDeque 类在 pollFirst 方法中使用按位运算?

java - ArrayDeque 到数组

java - 使用 Hibernate 调用 MySQL 存储过程时分页不起作用

java - 将一个面板类的按钮连接到另一个面板类的数据

java - 将部分添加到变量[]

javascript - 扩展 DOM 而不是元素原型(prototype)......可能吗?

python - 将嵌套字典中列表的元素加在一起 ​​- python