我有一个Map
,其中的键为String
,值为一组对象。Java - 打印集合中对象的文本表示
我将如何去打印出与每个单独关键字及其属性相关的对象?
我有这样的事情至今:
for (String eachKey : aMap.keySet()) {
System.out.println(eachKey + " :" + aMap.get(eachKey));
}
这仅仅打印出与对象身份的关键。
我有一个Map
,其中的键为String
,值为一组对象。Java - 打印集合中对象的文本表示
我将如何去打印出与每个单独关键字及其属性相关的对象?
我有这样的事情至今:
for (String eachKey : aMap.keySet()) {
System.out.println(eachKey + " :" + aMap.get(eachKey));
}
这仅仅打印出与对象身份的关键。
您必须重写班级的toString
方法。
例如为:
MyClass的
class MyClass {
int i = 1;
String s = "test";
MyClass(int i, String s) {
this.i = i;
this.s = s;
}
@Override
public String toString() {
return "MyObject [i=" + i + ", s=" + s + "]";
}
}
和含有main
方法的类:
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
public class A {
@SuppressWarnings("serial")
public static void main(String[] args) {
Map<String, Set<MyClass>> aMap = new HashMap<>();
aMap.put("firstKey", new HashSet<MyClass>() {
{
add(new MyClass(1, "a"));
add(new MyClass(2, "b"));
}
});
aMap.put("secondKey", new HashSet<MyClass>() {
{
add(new MyClass(3, "c"));
}
});
for (String eachKey : aMap.keySet()) {
System.out.println(eachKey + " :" + aMap.get(eachKey));
}
}
}
的输出将是:
firstKey :[MyObject [i=2, s=b], MyObject [i=1, s=a]]
secondKey :[MyObject [i=3, s=c]]
注意,通常你的IDE已经为您生成的toString
方法的能力:
非常清晰和简洁的解释:)现在设法得到这个工作。 – demonLaMagra
覆盖Object类中的toString()
方法。如果你没有在你的类中定义toString()方法,System.out.println()
将调用对象的toString(),Object类将只打印classname @。
要么为此类重新定义'toString()'(您的IDE可以提出一个默认值)或者定义一个在循环中调用的print()方法,或者使用reflexion以列出每个属性/值。 –