我有一个使用Java 7的grails应用程序。在这个应用程序中,我有一个用于List的表和一个该表中的Items的表,如下所示。 List是父级的,这是多对多的关系,对于Normalization,我有List_Item类,因此正常功能可以按预期工作。
Class Parent{
static hasOne{list:List}
}
Class List{
....
static hasMany{item:Item}
static hasOne{listOrder:ListOrder}
}
Class Item{
Long id
.....
}
现在,我必须将项目的顺序存储在列表中。所以我创建了以下结构
Class ListOrder{
Long id
List list
//Stores all the ids as a coma separated string in the necessary order
String order
}
因此,每次更改订单时,都要更新ListOrder记录。
现在,当我检索List或Parent类时,我需要一种使用存储的ID Sting对项目进行排序的方法。我希望通过名称为“orderItems()”的List域对象中的方法来实现此目的,当我调用该方法时,List对象中的item参数将设置为排序的List对象。
我想到的想法类似于以下代码
Class List{
....
orderItems(){
this.item = this.item.sort(this.itemOrder.order.split(','))
}
....
}
我如何才能实现这一目标,或者有更好的方法实现这一目标?根据要求,列表可以包含100多个项目,因此我选择不单独存储每个项目的位置。
最佳答案
不确定您在做什么。但是只是对列表进行排序?
如果列表中的项目是对象,则可以像这样对任何对象字段进行排序。
Class obj {
String name
String status
String desc
}
List objList = .... List of obj
obj.sort {a, b -> a.name <=> b.name} // Sort by name
obj.sort {a, b -> a.status <=> b.status} // Sort by status
obj.sort {a, b -> a.desc <=> b.desc} // Sort by desc
列表可以存储数百万个项目,因此请不要输入字符串。
关于sorting - 按字符串列表中的ID对对象列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44156965/