JAVA:去掉map重复value时,报java.lang.StackOverflowError,求问 怎么优化下面代码? 5

publicstaticIdentityHashMap<String,JSONObject>removeRepetitionFromMap(IdentityHashMap... public static IdentityHashMap<String, JSONObject> removeRepetitionFromMap(IdentityHashMap<String, JSONObject> map) {int i = 0 ;
Set<Entry<String, JSONObject>> set = map.entrySet();
List<Entry<String, JSONObject>> list = new ArrayList<Entry<String, JSONObject>>(set);
Collections.sort(list, new Comparator<Entry<String, JSONObject>>() {
public int compare(Entry<String, JSONObject> entry1, Entry<String, JSONObject> entry2) {
return Integer.valueOf(entry1.getValue().hashCode()) - Integer.valueOf(entry2.getValue().hashCode());
}
});
for (int index = 0; index < list.size(); index++) {
String key = list.get(index).getKey();
JSONObject value = list.get(index).getValue();
int next_index = index + 1;
if (next_index < list.size()) {
String next_key = list.get(next_index).getKey();
JSONObject next_value = list.get(next_index).getValue();
System.out.println("Is Equal ? :"+(value.toString().equals(next_value.toString()) ));
if (value.toString().equals(next_value.toString())) {
Dup = true;
if (key.hashCode() < next_key.hashCode()) {
map.remove(next_key);
list.remove(next_index);
} else {map.remove(key); list.remove(index); } index--; duplicateRequestArray.add(value); i++;

} else{ Dup = false; } } }
ArrayList<JSONObject> jsonList = new ArrayList<JSONObject>();
Iterator<Entry<String, JSONObject>> iterator = map.entrySet().iterator();
while (iterator.hasNext()) {
Entry<String, JSONObject> entry = iterator.next();
JSONObject value = entry.getValue();
jsonList.add(value);
}
size:"+removeDuplicate(jsonList).size());
if(map.size()!=(removeDuplicate(jsonList).size())){
removeRepetitionFromMap(map);
}
return map;
}有时报错
展开
 我来答
若以下回答无法解决问题,邀请你更新回答
WM_THU
2015-04-08 · TA获得超过7164个赞
知道大有可为答主
回答量:4285
采纳率:80%
帮助的人:3933万
展开全部
  1.  StackOverflowError是因为递归深度过大导致的。请改成非递归算法。

  2. 代码一片混乱。。请把源码文件发到百度网盘 然后在这里贴共享链接。

追问
囧,公司把云禁了..留个邮箱可好?
追答
我的意思是题主先改成非递归,有问题再贴上来。
这个递归的就不看了,看了也没用。
要邮箱的话到私信里聊。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式