我有10个项目的数组列表。我想按其参数对这些项目进行排序,但我不确定如何进行排序。
我在数组列表中的项目的签名是:
Creature(String n, Terrain startTerrain, boolean flying, boolean magic, boolean charge, boolean ranged, int combat)
所以从本质上讲,我想对我的数组列表进行排序,以便使魔术为真的生物首先出现,然后是远程的生物首先出现,它们出现在列表中的第二位,然后是其他所有位。
我仅使用冒泡排序,并且不确定如何实现此功能。有什么提示吗?
最简单的方法是创建你自己的类,它实现Comparator<Creature>
,说CreatureComparator
。它的compare
方法将定义所需的顺序Creature
。
比较其两个参数的顺序。当第一个参数小于,等于或大于第二个参数时,返回负整数,零或正整数。
然后,您可以致电Collections.sort(yourArrayList, new CreatureComparator());
。
要一次按多个属性进行排序,请首先测试第一个排序标准。即,如果左侧的magic
是true
,但右侧的magic
是false
,则返回-1
,以便所有魔法生物都在所有非魔法生物之前。如果是倒退,请返回1
。仅当magic
字段相同时,您才开始比较第二和第三(以及任何其他)排序标准。因此,如果magic
字段相同,则进行ranged
下一个测试,依此类推。只有当所有排序条件都相同时,您才返回0
(等效)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句