TreeSet中某个元素值改变之后怎样重新变成有序?

liyino 2014-11-04 08:39:58
问题描述:
一个奖牌榜类MedalStandings,一个国家类Country
Country类中存有:(int)goldMedalNum, (int)silverMedalNum, (int)bronzeMedalNum, (String)countryName
MedalStandings类中本来计划存有TreeSet<Country> allCountry;
但是刚刚发现如果改变Country中的奖牌数 (通过addGoldMedalNum等方法) 的话,TreeSet不会调整顺序,那么这个TreeSet里面就有可能存的是乱序Country.
又没有什么办法可以让TreeSet重现排序(虽然我知道TreeSet推荐存储静态数据).
或者大家有什么更好的解决方案,欢迎告诉我.
本人新手,望谅解!
...全文
457 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
liyino 2014-11-11
  • 打赏
  • 举报
回复
这个问题我已经解决了, 就是将对Country的操作放在TreeSet里, 代码逻辑本身也应该是这样.
humanity 2014-11-06
  • 打赏
  • 举报
回复
引用 2 楼 sky_walker85 的回复:
先把这个country从TreeSet中删除掉,改完后再添加进去如何
这个主意不错,修改了它的值之后把它从集合中删除再重新添加回去就能触发 TreeSet 调整位置。
jikeizod 2014-11-06
  • 打赏
  • 举报
回复
TreeSet是按字母排序的
zdd2389 2014-11-05
  • 打赏
  • 举报
回复
list<Country> ,每次修改调用List.sort()
wtd1994 2014-11-05
  • 打赏
  • 举报
回复
但是如何在Country类内部调用存储它自己的Collection对象的sort方法?
wyc_ 2014-11-05
  • 打赏
  • 举报
回复
没有更好的方法,可以先把类似addGoldMedalNum方法执行完后,统一执行一次Collection.sort()操作,根据具体的情况吧。
code小生 2014-11-05
  • 打赏
  • 举报
回复
treeSet()本来就是排序的,只是你想让他按什么依据排序,默认的是按字母顺序的。
skyWalker_ONLY 2014-11-05
  • 打赏
  • 举报
回复 1
先把这个country从TreeSet中删除掉,改完后再添加进去如何

62,614

社区成员

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

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