sorting - 按字符串列表中的ID对对象列表进行排序

标签 sorting grails

我有一个使用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/

相关文章:

php - PHP比较和填充不同长度的数组

algorithm - 我如何错误地实现此算法以对螺旋中的点列表进行排序?

c - 在 C 中对重复行进行排序

jquery - Grails JQuery Ajax 表单验证

git - 与Grails和inPlace插件的持续集成(Jenkins)

Java:排序索引数组

javascript - 如何根据每个 LI.span 中的数字对列表进行排序?

rest - Grails Spring Security REST 插件 - token 存储失败

Heroku 上的 Grails - spring 安全核心 secureChannel.definition 导致重定向循环

html - HTML5 Mime类型错误