在数组中的字符串上连接递增的数字

时间:2015-11-11 11:48:44

标签: java arrays arraylist

我有这段代码:

<input id="txtDate" type="date">

我需要在这个名字上增加一个数字。预期的输出应为:

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.000个名字来做它。 我想我需要类似的东西,但我不知道如何增加:

System.out.println(names.get(0)) // JEAN.PAUL
System.out.println(names.get(1)) // JEAN.PAUL1
System.out.println(names.get(2)) // MARIA.SILVA
System.out.println(names.get(3)) // JEAN.PAUL2
System.out.println(names.get(4)) // MARIA.SILVA1
System.out.println(names.get(5)) // MARIA.SILVA2

2 个答案:

答案 0 :(得分:1)

浏览每个元素,然后查看它应该具有的数字。然后打印出带有索引的项目

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);
    }
}

答案 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);
        }
    }

}