最近做游戏中的背包系统中的一个快速整理接口,其实就是按照物品的几个指定特性进行排序后更新背包中物品位置。找了一下,发现重载Collections.sort方法可以实现对List中的数据根据其存储的数据表字段进行排序。其实还有一种方法,就是对List中对象实现Compareable接口。这种方法没有使用。
需要排序的规则是先按类型排(升序),类型相同的话看等级(降序,等级高的在前),等级相同的看品质(降序,数字越大品质越高),品质相同按照获取时间排序(获取时间早的在前)。
由于只是简单的测试,所以所有的代码都写到一个文件中了。在实际应用时,List中存放的是物品表的映射类对象。排序后需要重新更新表中物品的位置字段。
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class TestCollectionSort {
public static void main(String[] args) {
List<ItemObject> itemObjects = new ArrayList<ItemObject>();
ItemObject itemObject1 = new ItemObject();
itemObject1.setItemType(1);
itemObject1.setLevel(6);
itemObject1.setQuality(4);
itemObject1.setObtainDate