4 回答
TA贡献1993条经验 获得超5个赞
您可以在添加之前检查您的列表,如下所示:
public void addWithSuffix(String email) {
if(list.contains(email)) {
int number = 0;
String[] tmp = email.split("@");
for(; list.contains(tmp[0] + number + "@" + tmp[1]); number++){}
list.add((tmp[0] + number + "@" + tmp[1]));
}
else {
list.add(email);
}
}
但是,当然,在尝试添加之前验证您的输入以确保电子邮件有效。而且我还建议将 a 换成ListaSet
TA贡献1828条经验 获得超3个赞
创建自定义添加方法并使用拆分值并检查直到达到最大值,
import java.util.ArrayList;
import java.util.List;
public class CustomListAdd {
public static void main(String[] args) {
List <String> list=new ArrayList<String>();
add("jony@test.com",list);
add("jony@test.com",list);
add("jony@test.com",list);
add("jony@test.com",list);
System.out.println(list);
}
public static void add(String value,List<String> list) {
if(list.contains(value)) {
int count = 1;
String[] strSplited = value.split("@");
while(list.contains(strSplited[0] + count + "@" + strSplited[1]))
count++;
list.add((strSplited[0] + count + "@" + strSplited[1]));
}
else {
list.add(value);
}
}
}
TA贡献1829条经验 获得超7个赞
尝试这个
主班
List <String> list=new ArrayList<String>();
list.add("jony@test.com");
list.add("jony1@test.com");
list.add("jony2@test.com");
list.add("jony3@test.com");
list.add("gerd@test.com");
String newEmail = "jony@test.com";
String last = "";
for (String string : list) {
if(compareString(newEmail , string)){
last = string;
}
}
int newNumber = Integer.valueOf(last.substring(last.indexOf("@")-1, last.indexOf("@")))+1;
String[] s = newEmail.split("@");
list.add(s[0]+ newNumber + s[1]);
System.out.println(list);
替换数字后比较字符串
private static boolean compareString(String string, String string2) {
string2 = string2.replaceAll("\\d","");
return string.equals(string2);
}
TA贡献1876条经验 获得超7个赞
尝试这个:
import java.io.*;
import java.util.*;
public class DynamicMail{
private Map<String, Integer> map = new HashMap<>();
private List<String> emails = new ArrayList<>();
public static void main(String args[]){
DynamicMail dm = new DynamicMail();
dm.addToList("jony@test.com");
dm.addToList("gary@test.com");
dm.addToList("jony@test.com");
dm.addToList("jony@test.com");
dm.addToList("jony@test.com");
dm.addToList("gary@test.com");
dm.addToList("ghost@test.com");
System.out.println(dm.getEmails());
}
public Map<String, Integer> getMap(){
return map;
}
public List<String> getEmails(){
return emails;
}
public void addToList(String email){
String[] parts = email.split("@");
Integer i = map.computeIfAbsent(parts[0], x->new Integer(0));
if(i!=0)
emails.add(parts[0]+i+"@"+parts[1]);
else
emails.add(email);
map.put(parts[0], ++i);
}
}
假设您从一个空列表开始,并且 jony1@test.com 或 gerd2@test.com 之类的电子邮件不会作为输入,这将起作用。
添加回答
举报