【JAVA基础】List处理

List处理

List使用Lists.partition()分片

public static <T> List<List<T>> partition(List<T> list, int size)

参数:该方法接受两个参数:

list:该列表将根据分区大小分为子列表。
size:每个子列表的期望大小。最后一个子列表的大小可能较小。

返回值:该方法返回连续子列表的列表。每个子列表(除了最后一个子列表)的大小都等于分区大小。

异常:如果分区大小为非正数,则Lists.partition()方法将引发IllegalArgumentException。

以下示例说明了上述方法的实现:

范例2:

// Java code to show implementation of 
// Guava's Lists.partition() method 
  
import com.google.common.collect.Lists; 
import java.util.Arrays; 
import java.util.List; 
  
class GFG { 
  
    // Driver's code 
    public static void main(String[] args) 
    { 
  
        // Creating a List of Characters 
        List<Character> myList 
            = Arrays.asList('H', 'E', 'L', 'L', 'O', 
                            'G', 'E', 'E', 'K', 'S'); 
  
        // Using Lists.partition() method to divide 
        // the original list into sublists of the same 
        // size, which are just views of the original list. 
        // The final list may be smaller. 
        List<List<Character> > lists 
            = Lists.partition(myList, 3); 
  
        // Displaying the sublists 
        for (List<Character> sublist:lists) 
            System.out.println(sublist); 
    } 
}

输出:
[H, E, L]
[L, O, G]
[E, E, K]
[S]
/**
     * 接收集团物料
     */
    @ApiOperation(value = "集团物料接收接口")
    @Permission(permissionPublic = true)
    @PostMapping("/receiveinfo")
    public String receiveinfo(@PathVariable Long organizationId,@RequestBody String reqContent) {

        String esbCode = "0";
        String esbDesc = "接收成功";
        JtMdmMaterialReqDTO jtMdmMaterialReqDTO = new JtMdmMaterialReqDTO();
        List<JtMdmResultDataInfoDTO> jtMdmResultDataInfoDTOList = new ArrayList<>();
        try{
            //String 转json
            jtMdmMaterialReqDTO = JSONObject.parseObject(reqContent,JtMdmMaterialReqDTO.class);

            List<JtMdmMaterialDataInfosDTO> jtMdmMaterialDataInfosDTOList = jtMdmMaterialReqDTO.getDATAINFOS();
            //切片
            List<List<JtMdmMaterialDataInfosDTO>> list = Lists.partition(jtMdmMaterialDataInfosDTOList,1);
            for (List<JtMdmMaterialDataInfosDTO> jtMdmMaterialDataInfosDTOS : list) {
                List<JtMdmMdMaterial> jtMdmMdMaterialList = new ArrayList<>();
                //报文转JtMdmMdMaterial
                jtMdmMaterialDataInfosDTOS.forEach(jtMdmMaterialDataInfosDTO -> {
                    jtMdmMdMaterialList.add(jtMdmMaterialDataInfosDTO.getDATAINFO());
                });

                List<JtMdmResultDataInfoDTO> pieceJtMdmResultDataInfoDTO = this.jtMdmMdMaterialService.receiveInfo(jtMdmMaterialReqDTO.getUUID(),jtMdmMdMaterialList);
                jtMdmResultDataInfoDTOList.addAll(pieceJtMdmResultDataInfoDTO);

            }

        }catch (Exception e){
            esbCode = "1";
            esbDesc = e.getMessage();
        }


        JtMdmResultEsbDTO jtMdmResultEsbDTO = new JtMdmResultEsbDTO
                                            .Builder()
                                            .setESB(new JtMdmResultDTO
                                                    .Builder(esbCode,esbDesc)
                                                    .setDATA(new JtMdmResultDataDTO
                                                            .Builder()
                                                            .setDATAINFOS(new JtMdmResultDataInfosDTO
                                                                        .Builder(jtMdmMaterialReqDTO.getUUID())
                                                                        .setDATAINFO(jtMdmResultDataInfoDTOList)
                                                                    .build())
                                                            .build())
                                                    .build())
                                            .build();
        return JSONObject.toJSONString(jtMdmResultEsbDTO);

    }

posted on 2022-11-29 15:20  舟山婠贞  阅读(95)  评论(0编辑  收藏  举报

导航