我有一个对象地图:
HashMap<Object, Object> map = new HashMap<>();
map.put(1, new String("Hello"));
map.put("two", 12345);
map.put(3, new byte[]{12,20,54});
如何打印每个值对象大小 ??
请帮忙!
答案 0 :(得分:2)
你可能想回去重新思考你的设计,因为以你的方式混合类型通常是一个坏主意。
话虽这么说,如果这不是您的选择,您需要检查对象的类型,然后打印“&#39; size&#39;对于每一个定义你的事情是否合适:
public void printSize(Object o) {
if (o instanceof String) {
String s = (String) o;
System.out.println(s.length());
} else if (o instanceof byte[]) {
byte[] b = (byte[]) o;
System.out.println(b.length);
} else if (o instanceof Integer) {
Integer i = (Integer) o;
System.out.println(String.valueOf(i).length());
// and so on for other types
} else {
throw new InputMismatchException("Unknown type");
}
}
答案 1 :(得分:1)
从您给定的设计中,您有一个非常糟糕的选项,即检查对象的当前类型并定义逻辑以了解其size
:
public int size(Object o) {
if (o instanceof String) {
return ((String)o.)length();
}
if (o instanceof Object[].class) {
return ((Object[])o).length;
}
if (o instanceof byte[].class) {
return ((byte[])o).length;
}
//and on and on...
//if something isn't defined, just return 0 or another default value
return 0;
}
但请注意,这是一个糟糕的方法,因为你的设计很糟糕。如果你解释你真正的问题会更好。更多信息:What is the XY problem?