我是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); }
道歉,如果不清楚我会很乐意澄清是否需要。
非常感谢你现在点击的帮助。
答案 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()