我想将字符串添加到字符串数组

时间:2018-11-19 19:54:48

标签: java arrays string data-structures

我有一个类,并且在该类中有一个私有变量。

private String[] stringArray = new String[100]

在那个类中我有一个这样的方法

public void addString (String addedString) {}

所以我想在该字符串数组中添加一个字符串。 我不想使用列表,而只是将其添加到具有预定数量的“空”元素的字符串数组中。

我尝试过

public void addString (String addedString) {
stringArray += addedString;
}

但是我收到一个错误错误: 不兼容的类型:无法将字符串转换为String []

4 个答案:

答案 0 :(得分:0)

您不能“添加到”数组:它是固定长度的数据结构。

您可以再创建一个新数组,并设置最后一个元素:

stringArray = Arrays.copyOf(stringArray, stringArray.length + 1);
stringArray[stringArray.length - 1] = addedString;

但是,老实说,最好改用List(特别是ArrayList),它可以为您增加数组的长度(如果要添加很多,这样做的效率也更高)元素)。

答案 1 :(得分:0)

您实际上不能将另一个元素添加到数组中,您知道,它是一个数组,它是固定大小的。里面已经有100个字符串。如果确实需要使用数组而不是列表,则必须记住数组中包含有意义数据的最后一个元素,并替换下一个:

private string[] stringArray = new String[100];
private int meaningful = 0;
public void addString (String addedString) {
    stringArray[meaningful+1] = addedString; // optionally check, whether the array really has enough space like meaningful < 100
    meaningful++;
}

答案 2 :(得分:0)

class Data {
    private final String[] arr = new String[100];
    private int pos = -1;

    public void add(String str) {
        if(pos < arr.length - 1)
            arr[++pos] = str;
    }

    public String remove() {
        return pos >= 0 ? arr[--pos] : null;
    }
}

答案 3 :(得分:0)

public void addString (String addedString)
{
    String[] old = stringArray;
    stringArray = new String[old.length + 1];
    for(int i = 0; i < old.length; i++)
        stringArray[i] = old[i];
    stringArray[stringArray.length] = addedString;
}

那基本上是最优化的方法。但是您应该改用ArrayList。