【问题标题】:Java - Google App Engine - Sort ArrayList<Object> without using Collections.sort()Java - Google App Engine - 不使用 Collections.sort() 对 ArrayList<Object> 进行排序
【发布时间】:2012-07-07 19:43:49
【问题描述】:

我需要对 ArrayList 进行排序,但不能使用 Collections.sort(),因为 Google App Engine 的 Java 运行时环境不支持它。我能怎么做?谢谢! ^^

【问题讨论】:

  • 您的 ArrayList 是否有重复的值,您想保留这些值..?
  • 不,没有重复值!
  • 是否支持数组类?
  • 谢谢你们,我综合了你们的所有建议并解决了我的问题!
  • Java 1.7 中的 Collections.sort 使用新的 TimSort 如果您的 Comparator 不遵循排序不变量(反对称和传递),则会引发异常。

标签: java google-app-engine sorting collections arraylist


【解决方案1】:

如果您的 ArrayList 没有重复值.....并且我假设即使它有,您也不希望有冗余数据..因此最好将 TreeSet 和 Comparator 一起使用...

例如:

ArrayList<MyObject> arr = new ArrayList<MyObject>();

TreeSet<MyObject> t = new TreeSet<MyObject>(Comparator c);

t.addAll(arr);

【讨论】:

  • 让我的完全正常工作了........而且上面的sn-p只是一个例子,如何实现它的基本概念............跨度>
【解决方案2】:

Google App Engine 是否支持TreeSet?如果是这样,假设没有重复元素并且元素是Comparable,请使用TreeSet

List list = your ArrayList
List sortedList = new ArrayList(new TreeSet(list));

如果元素不是Comparable,您还可以将Comparator 提供给TreeSet。为简单起见,我省略了泛型。

【讨论】:

  • TreeSet 是支持的,但我需要使用自定义的比较器,TreeSet 可以负担得起吗?
猜你喜欢
  • 1970-01-01
  • 2013-06-20
  • 2019-05-03
  • 1970-01-01
  • 2017-05-07
  • 2011-08-12
  • 2012-07-15
  • 1970-01-01
  • 2017-03-05
相关资源
最近更新 更多