将字符串分配给部分填充数组的字段

时间:2014-11-27 00:25:48

标签: java arrays loops

我有一个包含大约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中创建另一个类吗?我只是不想把“字符串”放在该文本文件中的每个单词前面。

1 个答案:

答案 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...
}