数组toString后变成了 string,如何才能得到之前的string数组?

xIaoKasd 2009-11-05 12:45:46

String [] aa = {"hello","world"};
String temp = aa.toString();
System.out.println(aa);
System.out.println(temp);
System.out.println(Arrays.deepToString(aa));

如果把temp(aa的hashcode)作为参数传给另外的函数,有没有办法透过temp,也即aa的hashcode 逆出aa来??
...全文
383 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xIaoKasd 2009-11-05
  • 打赏
  • 举报
回复
当我把temp写到文件中或者数据库里面时候,就不是hashcode了,是真实的数据( [hello,world]),虚拟机做了深拷贝。说明是有可能的。

我可以不需要整个数组形式,能得到[hello,world]这种字符串就ok。
djt_1982 2009-11-05
  • 打赏
  • 举报
回复
不可能,否则压缩就没那么麻烦了
ouyangyh 2009-11-05
  • 打赏
  • 举报
回复
晕,你现在的数组是String数组
如果你是别的对象,看你怎么整
  • 打赏
  • 举报
回复
你能重写数组的 toString 方法么?好像不行吧

数组的 toString 输出的是数组维数、数组类型,以及十六进制的 hashCode,根本不可能得到数据中的数据。
bawgiitx 2009-11-05
  • 打赏
  • 举报
回复
不是很明白
haojia0716 2009-11-05
  • 打赏
  • 举报
回复

有很多类重写了hashCode方法

比如 HashMap就重写了hashCode方法

//Map里的方法
public int hashCode() {
int h = 0;
Iterator<Entry<K,V>> i = entrySet().iterator();
while (i.hasNext())
h += i.next().hashCode();
return h;
}

//Map.Entry里的方法
public int hashCode() {
return (key == null ? 0 : key.hashCode()) ^
(value == null ? 0 : value.hashCode());
}
luxiaoshuai 2009-11-05
  • 打赏
  • 举报
回复
我感觉是不可行的 temp只是stack里的一个变量而已,你认为它能保存已前的形式?
苍蝇①号 2009-11-05
  • 打赏
  • 举报
回复
那你通过这种形式的hashcode 不就可以了,找麻烦 [hello,world]
haojia0716 2009-11-05
  • 打赏
  • 举报
回复
看看这个 你能通过hashcode找出是哪个map吗


public static void main(String[] args) {
HashMap map1 = new HashMap();
map1.put("a", "aaa");
HashMap map2 = new HashMap();
map2.put("a", "aaa");
System.out.println(map1.hashCode() + " " + map2.hashCode());
}
haojia0716 2009-11-05
  • 打赏
  • 举报
回复
真的? 怎么写的? 为什么我写不出来
xIaoKasd 2009-11-05
  • 打赏
  • 举报
回复
没人了?

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧