Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/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
Java 如何在列表中只搜索每个区别的4个元素?_Java_Spring Mvc_Arraylist_Spring Data - Fatal编程技术网

Java 如何在列表中只搜索每个区别的4个元素?

Java 如何在列表中只搜索每个区别的4个元素?,java,spring-mvc,arraylist,spring-data,Java,Spring Mvc,Arraylist,Spring Data,如何在列表中只搜索每个区别的4个元素 范例 我有一个主列表,一次接收所有数据,包括重复数据 用户列表=[1234123412344123412341234123411234,543254325432543254325432432…] 我需要根据收到的数据将这些数据分成4组,如示例所示 另一个列表中的预期结果=[12341234112341234,543254325432543252] 如何使这一点有所不同 我更改代码以生成csv文件,而不是移动到另一个列表 try {

如何在列表中只搜索每个区别的4个元素

范例

我有一个主列表,一次接收所有数据,包括重复数据

用户列表=[1234123412344123412341234123411234,543254325432543254325432432…]

我需要根据收到的数据将这些数据分成4组,如示例所示

另一个列表中的预期结果=[12341234112341234,543254325432543252]

如何使这一点有所不同

我更改代码以生成csv文件,而不是移动到另一个列表

    try {

        Date dataInicio = new SimpleDateFormat("dd-MM-yyyy").parse(inicio);
        Date dataFim = new SimpleDateFormat("dd-MM-yyyy").parse(fim);
        Date dataAtual = new Date();
        nomeCpfLogin = nomeCpfLogin.toUpperCase();
        
        List<RevogacaoConsolidadoSMS> revogacaoData = revogacao.consultaConsolidadoNetSMS(dataInicio, dataFim,nomeCpfLogin);
        
        List<RevogacaoConsolidadoSMS> statusCorrigido = validaStatus(revogacaoData);
        
        statusCorrigido = statusCorrigido.stream().distinct().collect(Collectors.toList());
                
        File arquivo = new File(environment.getRequiredProperty("path.csv")+"ConsolidSMS.csv");
        

        // Cria arquivo caso não exista.
        if (!arquivo.exists()) {
            arquivo.createNewFile();
        }

        /*
         * Escreve o arquivo e guarda dentro do caminho desejado objeto arquivo 
         * Nome dos processos
         * DUM;ISP;ABC; BSU; SPO ;CTV ;BHPR ;SUL ;DB09 ;DB09S ;
         * 
         */
        FileWriter fw = new FileWriter(arquivo);
        BufferedWriter bw = new BufferedWriter(fw);
        String result = "";
        bw.write("Login" + ";" + "Nome" + ";" + "CPF" + ";" + "Desligamento" + ";" + "Sistema" +
                 ";" + "Data/Hora Gravação" + ";" + "Status por base" +";"
                + "Protocolo" + ";" + "Processado" + ";");
        for (RevogacaoConsolidadoSMS revog : statusCorrigido) {

            for (int i = 0; i <= 4; i++) {
                if (i == 1) {
                    revog.setNome_sistema("SMS");
                } else if (i == 2) {
                    revog.setNome_sistema("ATSAL");

                } else if (i == 3) {
                    statusCorrigido.get(i).setNome_sistema("NATSAL");
                    revog.setNome_sistema("NATSAL");
                } else if (i == 4) {
                    statusCorrigido.get(i).setNome_sistema("PERF");
                    revog.setNome_sistema("PERF");
                }

                bw.newLine();
                bw.write(revog.getLogin() + ";" + revog.getNome() + ";" + revog.getCpf() + ";"
                        + revog.getData_desligamento() + ";" + revog.getNome_sistema() + ";"
                        + revog.getData_gravacao() + ";" + revog.getStatus() + ";" + revog.getProtocolo() + ";"
                        + revog.getData_processado());
            }
        }
        bw.close();
        fw.close();
试试看{
Date dataInicio=新的简化格式(“dd MM yyyy”).parse(INCIO);
日期数据fim=新的简化格式(“dd-MM-yyyy”)。解析(fim);
Date dataAtual=新日期();
nomeCpfLogin=nomeCpfLogin.toUpperCase();
列出revogacaoData=revogacao.consultaConsolidadoNetSMS(dataInicio、dataFim、nomeCpfLogin);
列表状态Corrigido=有效状态(revogacaoData);
statusCorrigido=statusCorrigido.stream().distinct().collect(Collectors.toList());
文件arquivo=新文件(environment.getRequiredProperty(“path.csv”)+“ConsolidSMS.csv”);
//克里亚·阿奎沃·卡索·埃希斯塔。
如果(!arquivo.exists()){
arquivo.createNewFile();
}
/*
*阿奎沃和卡米尼奥·德塞加多·奥布杰托·阿奎沃
*Nome-dos-processos
*杜马;ISP;ABC;BSU;SPO;有线电视;BHPR;南;DB09;DB09S;
* 
*/
FileWriter fw=新的FileWriter(arquivo);
BufferedWriter bw=新的BufferedWriter(fw);
字符串结果=”;
write(“Login”+”;“+”Nome“+”;“+”CPF“+”;“+”Desligamento“+”;“+”Sistema”+
“;”+”数据/Hora Gravação“+”;“+”状态库“+”;”
+“Protocolo”+;“+”Processado“+”;”;
用于(修订版:状态勘误表修订版){

对于(inti=0;i首先,您可以从ArrayList中获取所有不同的数字。如果使用HashSet,您可以这样做。这对整数列表有效

public static ArrayList<Integer> groupSeperator(ArrayList<Integer> nList) {
    ArrayList<Integer> mainList = new ArrayList<>();
    HashSet<Integer> dNumbers = new HashSet(nList);

    for (Integer n : dNumbers) {

        for (int i = 0; i < 4; i++) {
            mainList.add(n);
        }

    }

 return mainList;
}
    
publicstaticarraylistgroupseparator(arraylistnlist){
ArrayList mainList=新的ArrayList();
HashSet dNumbers=新的HashSet(nList);
for(整数n:dNumbers){
对于(int i=0;i<4;i++){
主列表。添加(n);
}
}
返回主列表;
}
这是我的解决方案

后半部分与上面的答案相同

    public static void main(String[] args) {

        List<Integer> list = new ArrayList<>(
                Arrays.asList(1234, 1234, 1234, 1234, 1234, 1234, 1234, 5432, 5432, 5432, 5432, 5432, 5432));

        list = list.stream().distinct().collect(Collectors.toList());
        
        List<Integer> result = new ArrayList<>();
        
        for(Integer l : list) {
            for(int i = 0; i < 4; i++)
                result.add(l);
        }
        
        System.out.println(result);
        
    }
publicstaticvoidmain(字符串[]args){
列表=新的ArrayList(
asList(1234、1234、1234、1234、1234、1234、1234、5432、5432、5432、5432、5432、5432、5432);
list=list.stream().distinct().collect(Collectors.toList());
列表结果=新建ArrayList();
for(整数l:列表){
对于(int i=0;i<4;i++)
结果:添加(l);
}
系统输出打印项次(结果);
}

到目前为止你都试了些什么?我正在用答案编辑这个问题。不清楚你在问什么,代码和示例没有关系。因为我不知道怎么做……我会尝试举例说明更好的方法。我认为收集者看到的是对象,而不仅仅是ID。