Loops 需要帮助使用多个命名器对对象的ArrayList进行排序和添加吗
我在排序ArrayList并将结果放入新的ArrayList时遇到了麻烦。 我正在使用Android Studio和Kotlin语言 用户使用salesOrderNr搜索并从服务器接收所有对应的行。 我从服务器接收到ArrayList中的以下数据:Loops 需要帮助使用多个命名器对对象的ArrayList进行排序和添加吗,loops,android-studio,sorting,kotlin,arraylist,Loops,Android Studio,Sorting,Kotlin,Arraylist,我在排序ArrayList并将结果放入新的ArrayList时遇到了麻烦。 我正在使用Android Studio和Kotlin语言 用户使用salesOrderNr搜索并从服务器接收所有对应的行。 我从服务器接收到ArrayList中的以下数据: var searchResults: ArrayList<SalesOrder> = [SalesOrder(bulkOrderNr=123, salesOrderNr=112233, salesOrderSet=1, productNa
var searchResults: ArrayList<SalesOrder> = [SalesOrder(bulkOrderNr=123, salesOrderNr=112233, salesOrderSet=1, productName="Product 1", productionTime="0:05:00" ),
SalesOrder(bulkOrderNr=123, salesOrderNr=112233, salesOrderSet=1, productName="Product 2", productionTime="0:12:00" ),
SalesOrder(bulkOrderNr=123, salesOrderNr=112233, salesOrderSet=1, productName="Product 3", productionTime="0:18:00" ),
SalesOrder(bulkOrderNr=234, salesOrderNr=112233, salesOrderSet=2, productName="Product 1", productionTime="0:16:00" ),
SalesOrder(bulkOrderNr=234, salesOrderNr=112233, salesOrderSet=2, productName="Product 2", productionTime="0:11:00" ),
SalesOrder(bulkOrderNr=, salesOrderNr=112233, salesOrderSet=3, productName="Product 1", productionTime="0:10:00" ),
SalesOrder(bulkOrderNr=345, salesOrderNr=112233, salesOrderSet=4, productName="Product 1", productionTime="0:02:00" ),
SalesOrder(bulkOrderNr=345, salesOrderNr=112233, salesOrderSet=4, productName="Product 2", productionTime="0:20:00" ),
SalesOrder(bulkOrderNr=345, salesOrderNr=112233, salesOrderSet=4, productName="Product 3", productionTime="0:14:00" )]
提前谢谢大家
编辑:我设法弄明白了。我相信还有更简单的方法,但我的解决方案如下:
var bulkOrderList: MutableList<Int> = ArrayList() //Collect all bulk order numbers from result Arraylist
for (singleLine in searchResults) {
if (singleLine.bulkOrderNr != null) {
bulkOrderList.add(singleLine.bulkOrderNr!!)
} else {
sortedList.add(singleLine) // If no bulkOrderNr, add item to sortedList
}
}
bulkOrderList = bulkOrderList.distinct() as MutableList<Int> // keep only all unique bulkOrderNr's
for (bulk in bulkOrderList) {
val dummyLine: SalesOrder =
SalesOrder(null, null, null, null, null)
for (item in searchResults) {
if (item.bulkOrderNr == bulk) {
if (dummyLine.bulkOrderNr == null) {
dummyLine.bulkOrderNr = item.bulkOrderNr
}
if (dummyLine.salesOrderNr == null) {
dummyLine.salesOrderNr = item.salesOrderNr
}
if (dummyLine.productionOrderSet == null) {
dummyLine.productionOrderSet = item.productionOrderSet
}
if (dummyLine.productName == null) {
dummyLine.productName = item.productName
} else {
dummyLine.productName += "\n${item.productName}"
}
if (dummyLine.productionTime == null){
dummyLine.productionTime = item.productionTime
} else {
//TODO figure out a method to sum time.
}
}
}
sortedList.add(dummyLine)
}
sortedList.sortBy { it -> it.productionOrderSet } //Expected result
var bulkOrderList:MutableList=ArrayList()//从结果ArrayList收集所有批量订单号
for(搜索结果中的单行){
if(singleLine.bulkOrderNr!=null){
bulkOrderList.add(singleLine.bulkOrderNr!!)
}否则{
sortedList.add(单线)//如果没有bulkOrderNr,则将项目添加到sortedList
}
}
bulkOrderList=bulkOrderList.distinct()作为可变列表//仅保留所有唯一的bulkOrderNr
对于(批量订单列表中的批量){
val dummyLine:销售订单=
SalesOrder(null,null,null,null,null)
用于(搜索结果中的项目){
如果(item.bulkOrderNr==批量){
if(dummyLine.bulkOrderNr==null){
dummyLine.bulkOrderNr=项目.bulkOrderNr
}
if(dummyLine.salesOrderNr==null){
dummyLine.salesfordernr=item.salesfordernr
}
if(dummyLine.productionOrderSet==null){
dummyLine.productionOrderSet=项目.productionOrderSet
}
如果(dummyLine.productName==null){
dummyLine.productName=item.productName
}否则{
dummyLine.productName+=“\n${item.productName}”
}
if(dummyLine.productionTime==null){
dummyLine.productionTime=item.productionTime
}否则{
//TODO找出一个求和时间的方法。
}
}
}
sortedList.add(dummyLine)
}
sortedList.sortBy{it->it.productionOrderSet}//预期结果
for (singleLine: SalesOrder in searchResults) {
if (singleLine.bulkOrderNr != null){
// I am stuck here
} else {
correctedList.add(singleLine) // if there is no bulkOrderNr, it means that I can add it to new array directly.
}
}
var bulkOrderList: MutableList<Int> = ArrayList() //Collect all bulk order numbers from result Arraylist
for (singleLine in searchResults) {
if (singleLine.bulkOrderNr != null) {
bulkOrderList.add(singleLine.bulkOrderNr!!)
} else {
sortedList.add(singleLine) // If no bulkOrderNr, add item to sortedList
}
}
bulkOrderList = bulkOrderList.distinct() as MutableList<Int> // keep only all unique bulkOrderNr's
for (bulk in bulkOrderList) {
val dummyLine: SalesOrder =
SalesOrder(null, null, null, null, null)
for (item in searchResults) {
if (item.bulkOrderNr == bulk) {
if (dummyLine.bulkOrderNr == null) {
dummyLine.bulkOrderNr = item.bulkOrderNr
}
if (dummyLine.salesOrderNr == null) {
dummyLine.salesOrderNr = item.salesOrderNr
}
if (dummyLine.productionOrderSet == null) {
dummyLine.productionOrderSet = item.productionOrderSet
}
if (dummyLine.productName == null) {
dummyLine.productName = item.productName
} else {
dummyLine.productName += "\n${item.productName}"
}
if (dummyLine.productionTime == null){
dummyLine.productionTime = item.productionTime
} else {
//TODO figure out a method to sum time.
}
}
}
sortedList.add(dummyLine)
}
sortedList.sortBy { it -> it.productionOrderSet } //Expected result