Java 如何在映射中获取字节值

Java 如何在映射中获取字节值,java,Java,我想得到Map对象内部的字节值 Map<String, Object> data = new HashMap<>(); data.put("foo", new byte[]{4}); System.out.println(data.get("foo")); Map data=newhashmap(); data.put(“foo”,新字节[]{4}); System.out.println(data.get(“foo”); 我得到的是这样的。。。[B@1a779dc

我想得到Map对象内部的字节值

Map<String, Object> data = new HashMap<>();
data.put("foo", new byte[]{4});

System.out.println(data.get("foo"));
Map data=newhashmap();
data.put(“foo”,新字节[]{4});
System.out.println(data.get(“foo”);
我得到的是这样的。。。[B@1a779dce


请帮帮我。

正如@JigarJoshi在他的评论中提到的,这就是
toString()
字节[]类的
toString()实现的样子。当您对
字节[]
执行
System.out.println
时,会调用
toString()
方法在打印之前将其转换为
字符串

如果要读取单个字节,则必须循环返回值

byte[] ba = (byte[]) data.get("foo");
for (byte b: ba) {
    System.out.println(b);
}

当您将
对象添加到映射非
字节[]
时,您需要强制转换它

Map<String, Object> data = new HashMap<>();
data.put("foo", new byte[]{4,3,1,2});
System.out.println(Arrays.toString((byte[])data.get("foo")));

这就是
byte[]
类的
toString()
实现的样子,您的期望是什么?我希望得到字节的值,即4。
data.get(“foo”)
返回一个
byte[]
它不是一个
字节
。你必须指定一个索引。这个重复的答案不是一个完全重复的答案,因为其中提到的是
int[]
,而不是
byte[]
。但同样的概念也适用。基本上,你得到的是
字节[]
,但它并不像你期望的那样打印。data.get(“foo”)是一种对象类型。data.get(“foo”)是一种对象类型。@Kuletzxc,修复了它。谢谢!很好…它工作了。谢谢你的帮助。很好…这个也工作了。谢谢你的帮助。太好了!!很高兴帮助你!!
[4,3,1,2]