【发布时间】:2017-03-29 03:03:39
【问题描述】:
我有一个字符串数组列表,我需要从 ["AA00001", "AA00005" ,"AA00003" ----- "ZZ00678"] 传递 22184 元素,我需要生成列表中不存在的序列元素。我已经为此编写了代码,并且对于较少的输入,它正在生成所需的输出。但是当我添加 22184 个元素并想要生成 200 个不存在于 arraylist 中的唯一 id 时,我收到了错误
方法 main(String[]) 的代码超过了 65535 字节的限制
有人可以帮忙吗?
import java.util.ArrayList;
public class GenerateIds
{
private static ArrayList<String> ids = new ArrayList<>();
static int n=50; //no of Ids u want to generate
static int completed =0;
static char ID[] = new char[7];
public static void main(String[] args)
{
ids.add("AA00001");
ids.add("AA00004");
ids.add("AA00007");
generateIds(0);
for(String id : ids)
{
System.out.println(id);
}
}
private static void generateIds(int i)
{
if(n!=completed)
{
if(i<2)
{
for(char c ='A';c<'Z';c++)
{
ID[i]=c;
generateIds(i+1);
}
}
else if(i>=2 && i<7)
{
for(char c ='0';c<='9';c++)
{
ID[i]=c;
generateIds(i+1);
}
}else if(i==7)
{
String id = String.valueOf(ID);
if(!ids.contains(id))
{
ids.add(id);
completed++;
}
}
}
}
}
【问题讨论】:
-
该代码绝对没有超过 64k 的限制。它runs fine on ideone.
-
你可以把你的身份证放在一个文本文件中,然后读取文本文件。
-
如果你在你的 main 方法中做所有的
ids.add("AA00001"); ids.add("AA00004"); ids.add("AA00007");... <many more>,它很容易超过限制,因为它变得太大了。最好有一个包含所有 ID 的外部文件并将其读入您的列表。 -
我想失败的代码有 22000 多个语句,例如
ids.add("...")。如果是这种情况,您是否考虑过将这个 id 列表放在一个文件中并读取它而不是把它们放在源代码中? -
该代码编译并运行完美,没有错误。