我有一个包含大约80000多个单词的文本文件。我正在尝试检查这些单词的长度,看看它是否与不使用数组列表输入的数字匹配。
假设一个数组包含这些全局变量:
public static int INITIAL_SIZE = 100;
public static int size;
public String[] array = new String[INITIAL_SIZE];
我要创建一个对象:
PartArray part = new PartArray();
还有一个领域:
part.array = new String[INITIAL_SIZE];
(然后通过将初始大小乘以2直到它可以包含所有80000多个单词,继续使用另一种方法扩展数组)
但是我想将数组中的每个单词分配给0,1,2,.....(80000 -1)到某种程度;
part.array[part.size++] = "aardvark";
.....
part.array[part.size++] = "zymurgy";
这样我就可以打印出具有这个特定长度的单词。
part.array[0];
但我该怎么做?我应该在java中创建另一个类吗?我只是不想把“字符串”放在该文本文件中的每个单词前面。
答案 0 :(得分:0)
我不确定我是否理解你想要做什么,但根据我的理解,你想要实现类似于ArrayList的东西..
首先让我们澄清一些事情。您发布的代码示例将始终导致ArrayIndexOutOfBoundsException:
part.array[part.size++] = "aardvark";
.....
part.array[part.size++] = "zymurgy";
无论你的数组有多大,你都会尝试访问该数组之外的内存。 如果你真的不想使用ArrayList(或任何其他List),你可能想要创建自己的类,其行为方式类似..
public class StringList{
public static final int DEFAULT_INITIAL_SIZE = 100;
public static final float DEFAULT_SCALE_FACTOR = 2;
private String[] content;
private float scaleFactor;
private int counter = 0;
public StringList(){
this(DEFAULT_INITIAL_SIZE);
}
public StringList(int initialSize){
this(initialSize, DEFAULT_SCALE_FACTOR);
}
public StringList(int initialSize, float scaleFactor){
this.scaleFactor = scaleFactor;
content = new String[initialSize];
}
public void add(String toAdd){
//check if we ran out of space for new content..
if(counter == content.length){
//create a new array with twice the current arrays size
String[] temp = new String[(int) (content.length * scaleFactor)];
//efficiently copy content from current array to temp
System.arraycopy(content, 0, temp, 0, content.length);
content = temp;
}
content[counter++] = toAdd;
}
public String get(int index){
return content[index];
}
public int size(){
return counter;
}
}
那班应该做你需要的一切...... 这是一个简短的例子..
StringList stringList = new StringList();
stringList.add("aardvark");
// add more stuff...
stringList.add("zymurgy");
for (int i = 0; i < stringList.size(); i++) {
String someText = stringList.get(i);
// do stuff with your string...
}