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