我有这段代码:
<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
答案 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);
}
}
}