【问题标题】:how can I fill a hashMap when the hashMap is inside a class instead of main?当 hashMap 在类而不是 main 中时,如何填充 hashMap?
【发布时间】:2016-05-02 14:34:03
【问题描述】:

当我在 main 中创建这个 hashMap 并填写它时,一切正常

    HashMap<String, Furgoneta> mapper = new HashMap<>();
    LocalDate f1 = LocalDate.of(2013, Month.JANUARY, 1);
    LocalDate f2 = LocalDate.of(2016, Month.FEBRUARY, 10);
    Furgoneta furgo1 = new Furgoneta("0001AAA", "Seat", "Ibiza", false, f1, f2, 3100);


    //FILLING HASHMAP
    mapper.put(furgo1.getMatricula(), furgo1);
    System.out.println(mapper.toString());

当我尝试在类而不是 main 中编写相同的代码时,put 将不起作用(无法填充 hashmap)

    //FILLING HASHMAP
    mapper.put(furgo1.getMatricula(), furgo1);
    System.out.println(mapper.toString());

object furgoneta(指面包车)

public class Furgoneta extends VehiculoAlquiler implements Serializable    
{
    private int mma;


    //constructor
    public Furgoneta(String matricula, String marca, String modelo, boolean alquilado, 
            LocalDate fechaI, LocalDate fechaF,int mma ) {
        super(matricula, marca, modelo, alquilado, fechaI, fechaF);
        this.mma = mma;
    }

    public int getMma() {
        return mma;
    }

如果我写这个 main 它可以工作

    HashMap<String, Furgoneta> furgonetas = new HashMap<>();
    LocalDate f1 = LocalDate.of(2013, Month.JANUARY, 1);
    LocalDate f2 = LocalDate.of(2016, Month.FEBRUARY, 10);
    Furgoneta furgo1 = new Furgoneta("0001AAA", "Seat", "Ibiza", false, f1, f2, 3100);


    //Las introducimos en la HashMap
    furgonetas.put(furgo1.getMatricula(), furgo1);
    System.out.println(furgonetas.toString());


    furgo1.importeAlquiler(f1, f2);

但我想做完全相同的事情,但 hashMap 在一个不在 main 中的类中

我无法填写我创建的哈希图。如果 hashmap 在 main 我可以填充它但是如果我尝试在一个类而不是 main 中编写 hashmap 并填充它,当我尝试填充它时它会说“包映射器不存在”和“包当 mapper 是 hashmap 名称而 furgo1 是一个对象时,furgo1 不会退出”

我看不到我的错误,我真的很感激一些帮助,我被困在这里几个小时了。对不起,如果我是第一次问的话会让人感到困惑

【问题讨论】:

  • 您能详细说明一下,“无法填写”是什么意思,您也可以发一个mcve吗?
  • 发布您的课程代码
  • 我猜你没有正确地构建或设置你的类@Bea。但是你真的需要解释更多出了什么问题。您正在经历的错误消息/控制流程。 Java lives outside of classes 中没有任何内容,所以说“这在类中不起作用”也有点用词不当,仅供参考
  • 你需要清除你的java基础知识..如果你想这样做,那么它可以在类内的静态块内完成
  • 公共类 Furgoneta 扩展 VehiculoAlquiler 实现 Serializable { private int mma; //构造函数 public Furgoneta(String matricula, String marca, String modelo, boolean alquilado, LocalDate fechaI, LocalDate fechaF,int mma ) { super(matricula, marca, modelo, alquilado, fechaI, fechaF);这个.mma = mma; } public int getMma() { return mma; }

标签: java hashmap


【解决方案1】:

你可以这样做:

Map<String, String> map = new HashMap<String, String>() {{
   put("1", "one");
   put("2", "two");
   put("3", "three");
}};

称为“双括号初始化”

第一个大括号创建一个新的 AnonymousInnerClass,第二个大括号声明一个实例初始化程序块,该块在实例化匿名内部类时运行。

【讨论】:

  • 非常感谢,这正是我所需要的,现在可以使用了 :)
猜你喜欢
  • 2023-03-16
  • 2021-07-07
  • 2013-12-19
  • 2016-09-07
  • 2015-05-12
  • 2017-08-16
  • 2020-07-13
  • 2019-01-09
  • 2015-03-23
相关资源
最近更新 更多