Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops 需要帮助使用多个命名器对对象的ArrayList进行排序和添加吗_Loops_Android Studio_Sorting_Kotlin_Arraylist - Fatal编程技术网

Loops 需要帮助使用多个命名器对对象的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

我在排序ArrayList并将结果放入新的ArrayList时遇到了麻烦。 我正在使用Android Studio和Kotlin语言

用户使用salesOrderNr搜索并从服务器接收所有对应的行。 我从服务器接收到ArrayList中的以下数据:

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