如何通过它的参数对数组列表进行排序?

时间:2014-02-12 22:18:47

标签: java sorting parameters

我有一个包含10个项目的数组列表。我想按参数对这些项目进行排序,但我不确定如何。

数组列表中我的项目的签名是:

Creature(String n, Terrain startTerrain, boolean flying, boolean magic, boolean charge, boolean ranged, int combat)

所以基本上我想让我的数组列表排序,所以它是魔法为真的生物,它们是第一个,然后是范围是第一个的生物,它们出现在列表的下一个,然后是其他一切。

我只使用冒泡排序,我不知道如何实现这一点。任何提示?

1 个答案:

答案 0 :(得分:2)

最简单的方法是创建自己的实现Comparator<Creature>的类,比如CreatureComparator。其compare method将定义您想要的Creature的顺序。

  

比较其订单的两个参数。当第一个参数小于,等于或大于第二个参数时,返回负整数,零或正整数。

然后你可以拨打Collections.sort(yourArrayList, new CreatureComparator());

要一次按多个属性排序,请先测试第一个排序条件。即如果左侧的magictrue,但右侧的magicfalse,则返回-1,以便所有神奇的生物都在此之前非魔法生物。如果那是倒退,请返回1。仅当magic字段相同时才开始比较二级和三级(以及任何其他)排序条件。因此,如果magic字段相同,请稍后测试ranged,等等。只有当您的所有排序条件相同时,才会返回0(等效)。