Java 串联数组中字符串上递增的数字

Java 串联数组中字符串上递增的数字,java,arrays,arraylist,Java,Arrays,Arraylist,我有以下代码: ArrayList<String> names = new ArrayList<>(); names.add("JEAN.PAUL"); names.add("JEAN.PAUL"); names.add("MARIA.SILVA"); names.add("JEAN.PAUL"); names.add("MARIA.SILVA"); names.add("MARIA.SILVA"); 我忽略了第一个 我很努力,但做不到。 PS:我需要通用的,我有350

我有以下代码:

ArrayList<String> names = new ArrayList<>();
names.add("JEAN.PAUL");
names.add("JEAN.PAUL");
names.add("MARIA.SILVA");
names.add("JEAN.PAUL");
names.add("MARIA.SILVA");
names.add("MARIA.SILVA");
我忽略了第一个

我很努力,但做不到。 PS:我需要通用的,我有350000个名字来做。 我想我需要这样的东西,但我不知道如何增加:

for (int x=0;x<names.size();x++) {
    for (int z=0;z<names.size();z++) {
        if (names.get(x).equals(names.get(z))) {

        }
    }                       
}

for(int x=0;x检查每个元素,然后查看它应该有什么数字。然后打印出该项目,并在其后面加上索引

for(int i=0;i<names.size();i++){
    int index=0;
    for(int j=0;j<i;j++){
        if(names.get(i).equals(names.get (j)){
             index++;
        }
    }
    if(index==0){
        System.out.println(names.get(i));
    }else{
        System.out.println(names.get(i) + index);
    }
}

for(inti=0;i另一种没有循环的方法

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class NumberUtil {

    /**
     * @param args
     */
    private static Map<String, Integer> nameMap = new HashMap<String, Integer>();

    public static void main(String[] args) {
        ArrayList<String> names = new ArrayList<String>();
        NumberUtil util = new NumberUtil();

        util.function(names, "JEAN.PAUL");
        util.function(names, "JEAN.PAUL");
        util.function(names, "MARIA.SILVA");
        util.function(names, "JEAN.PAUL");
        util.function(names, "MARIA.SILVA");
        util.function(names, "MARIA.SILVA");

        // or read names in loop and call util.function(names,"NAME");

        System.out.println(names);

    }

    private void function(List<String> names, String name) {
        Integer suffix = nameMap.get(name);
        if (suffix == null) {
            nameMap.put(name, Integer.valueOf(1));
            names.add(name);
        } else {
            names.add(name + suffix);
            nameMap.put(name, Integer.valueOf(1) + 1);
        }
    }

}
import java.util.ArrayList;
导入java.util.HashMap;
导入java.util.List;
导入java.util.Map;
公共类号rutil{
/**
*@param args
*/
私有静态映射nameMap=newhashmap();
公共静态void main(字符串[]args){
ArrayList name=新的ArrayList();
numberrutil util=新的numberrutil();
util.function(名称为“JEAN.PAUL”);
util.function(名称为“JEAN.PAUL”);
util.function(名称为“MARIA.SILVA”);
util.function(名称为“JEAN.PAUL”);
util.function(名称为“MARIA.SILVA”);
util.function(名称为“MARIA.SILVA”);
//或者读取循环中的名称并调用util.function(名称,“NAME”);
System.out.println(名称);
}
私有void函数(列表名称、字符串名称){
整数后缀=nameMap.get(name);
if(后缀==null){
nameMap.put(name,Integer.valueOf(1));
名称。添加(名称);
}否则{
名称。添加(名称+后缀);
nameMap.put(name,Integer.valueOf(1)+1);
}
}
}

必须修改列表本身?或者打印出来?再努力一点,你会做到的!天哪,这是如此简单,同时也是如此困难!谢谢!我正在考虑一个复杂的解决方案,然后你给出了一个漂亮干净的解决方案。很好
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class NumberUtil {

    /**
     * @param args
     */
    private static Map<String, Integer> nameMap = new HashMap<String, Integer>();

    public static void main(String[] args) {
        ArrayList<String> names = new ArrayList<String>();
        NumberUtil util = new NumberUtil();

        util.function(names, "JEAN.PAUL");
        util.function(names, "JEAN.PAUL");
        util.function(names, "MARIA.SILVA");
        util.function(names, "JEAN.PAUL");
        util.function(names, "MARIA.SILVA");
        util.function(names, "MARIA.SILVA");

        // or read names in loop and call util.function(names,"NAME");

        System.out.println(names);

    }

    private void function(List<String> names, String name) {
        Integer suffix = nameMap.get(name);
        if (suffix == null) {
            nameMap.put(name, Integer.valueOf(1));
            names.add(name);
        } else {
            names.add(name + suffix);
            nameMap.put(name, Integer.valueOf(1) + 1);
        }
    }

}