添加到地图和设置方法

时间:2016-03-26 12:33:50

标签: java methods

我是Java新手所以请原谅我的无知,我正尽力不要问一个愚蠢的问题。

我需要编写一个带有两个参数的方法,一个是我的map(String)的键,另一个是值(我的map的值是一个名为Object的用户定义对象的集合,它有三个字符串值本身)。

到目前为止,我有:

public void addMapObject(String aKey, Object anObject)//what would the anObject arguement look like?

{       Set objects = new HashSet<>();       objects.add(new Object(“”,“”,“”); //如何初始化这些值?       MyMap.put(aKey,objects);    }

道歉,如果不清楚我会很乐意澄清是否需要。

非常感谢你现在点击的帮助。

2 个答案:

答案 0 :(得分:1)

首先必须创建一个对象,如下所示:

pubic class MyObject{
  private String something;
  private Integer something2;
  private Double something3;
  //or whatever data types you want

  //Generate getters and setters
}

所以你现在有一个拥有东西的物体。

之后,您必须初始化地图以保存您的对象,以便在上面的方法中或作为全局"字段"在同一课程中你需要:

Map<String,MyObject> map = new HashMap<String,MyObject>();

然后,您的方法签名应包含MyObject而不是Object,您可以使用:

map.put(aKey, anObject)

答案 1 :(得分:-1)

java.lang是java定义的类,是public class Bean{ String valueOne; String valueTwo; String valueThree; public Bean(String valueOne, String valueTwo, String valueThree) { super(); this.valueOne = valueOne; this.valueTwo = valueTwo; this.valueThree = valueThree; } } 包的一部分。每个类都是这个类的子类。我觉得你应该创建一个单独的类。 您可以创建如下所示的类

public void addMapObject(String aKey, Bean anObject) {
    Set<Object> objects = new HashSet<>();
    objects.add(anObject);
    MyMap.put(aKey, objects);
}

您需要更改方法的签名

public void theCallerMethod(){
    addMapObject("YourKey", new Bean("YourActualvalueOne","YourActualvalueTwo","YourActualvalueThree"));
}

然后您询问如何初始化,您将在调用方法中执行以下操作

equals()

但是一旦你这样做,你还应该处理hashcode()Object.java方法,因为你需要在HashSet中添加你的类的对象。这些方法在基类public static class Bean { String valueOne; String valueTwo; String valueThree; public Bean(String valueOne, String valueTwo, String valueThree) { super(); this.valueOne = valueOne; this.valueTwo = valueTwo; this.valueThree = valueThree; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((valueOne == null) ? 0 : valueOne.hashCode()); result = prime * result + ((valueThree == null) ? 0 : valueThree.hashCode()); result = prime * result + ((valueTwo == null) ? 0 : valueTwo.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Bean other = (Bean) obj; if (valueOne == null) { if (other.valueOne != null) return false; } else if (!valueOne.equals(other.valueOne)) return false; if (valueThree == null) { if (other.valueThree != null) return false; } else if (!valueThree.equals(other.valueThree)) return false; if (valueTwo == null) { if (other.valueTwo != null) return false; } else if (!valueTwo.equals(other.valueTwo)) return false; return true; } } 中定义。详细信息为什么你需要这样做,我建议你研究这个,可以参考下面的链接 Why do I need to override the equals and hashCode methods in Java?

您的类bean最终将如下所示

popBackStackImmediately()