【问题标题】:Android: How to append string array [duplicate]Android:如何附加字符串数组[重复]
【发布时间】:2021-06-22 23:25:58
【问题描述】:

我有信息[]

private String info[] = {};

while (dataSnapshotsChat.hasNext()) {
  DataSnapshot dataSnapshotChild = dataSnapshotsChat.next();
  String data1 = dataSnapshotChild.getValue(String.class);

我想将 data1 附加到 info[] 任何人的帮助

【问题讨论】:

  • 欢迎来到 SO。请阅读 How to Ask 并注意 Java 与 JavaScript 不同(我假设您已经想到了附加到数组的想法)。在 Java 中,数组具有固定长度,如果需要增加该长度,则需要创建一个新数组并将元素复制过来。你想要的是一个可以附加到的List<String>
  • 感谢您的帮助。以及如何将 List 转换为添加到 info[] (因为 info[] 用于 customList 类中,它将在多个列表视图中显示数据。
  • 好吧,info[] 在您的情况下不是一个类型,而只是一个名称以及将类型信息 放在它周围的不良做法(我认为)。最好是String[] info,所以类型是String[]。话虽如此,您可能想了解List.toArray() 方法。该调用可能类似于info = yourList.toArray(new String[0]);,但请注意,此替换信息,因为您不能追加到数组。

标签: java android arrays string firebase


【解决方案1】:

您可能应该按照@Thomas 所说的去做,不过这里有一个快速的解决方案。

String info[];
    
List<String> tempList = new ArrayList<>();

// Your code with modifications
while (dataSnapshotsChat.hasNext()) {
    DataSnapshot dataSnapshotChild = dataSnapshotsChat.next();
    String data1 = dataSnapshotChild.getValue(String.class);

    //add data1 to temp list
    tempList.add(str);

    // ...

}

// must have size
info= new String[tempList.size()];

for (int i = 0; i < tempList.size(); i++) {

    info[i] = tempList.get(i);

}

// Do what you want with info

【讨论】:

    【解决方案2】:

    HERE 中有很多方法可以复制到数组 - 事实上,您必须创建大小为 +1 的新数组,因为通常数组具有固定大小。一些示例方法:

    static <T> T[] append(T[] arr, T element) {
        final int N = arr.length;
        arr = Arrays.copyOf(arr, N + 1);
        arr[N] = element;
        return arr;
    }
    

    您的电话

    append(info, data1);
    

    但我必须知道,这不是一种很好的性能方式,最好使用ArrayList 代替info,而不是效率不高且固定大小的数组。将整个数组复制到大小为N + 1(和附加项)的新数组实际上是繁重的操作,您想在while 方法中使用它...

    如果你愿意

    private ArrayList<String> info = new ArrayList<>();
    

    那么您可以简单地在while 中安全地调用add

    info.add(data1);
    

    【讨论】:

    • 非常感谢。我是初学者,现在我关注这个java2blog.com/android-custom-listview-with-images-text-example,但在这个网络中 countryname[] 是我的 info[],他们把“”放在里面,但在我的应用程序中,我想把 data1 放在 info[] 中。
    • 我在本教程中没有看到任何添加到数组的内容,所有内容都是固定大小的。这就是为什么这些集合是数组的原因。 “修改”数组内容效率不高,所以我强烈建议使用ArrayList
    • 谢谢大家我真的很感谢你的帮助,但我很努力但我失败了,我有一个新的大问题要解决,当我可以解决它时,我会立即回复
    猜你喜欢
    • 2013-12-17
    • 2013-12-16
    • 2021-09-05
    • 1970-01-01
    • 2018-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多