在java中连续更改数组大小

在java中连续更改数组大小,java,arrays,size,Java,Arrays,Size,我最近问过 String[] name = new String [10000]{}; while (c.moveToNext()){ ..... . .. . .. .. . name[i] = displayName; i++; } Log.d("COUNTS_CONTACTS", Arrays.toString(name)); 当我打印出COUNT\u联系人时 我得到了巨大的产出 [B,Bs,null,null,null,null,null,nul

我最近问过

String[] name = new String [10000]{};
while (c.moveToNext()){
     .....
.  .. . ..
 .. . 

name[i] = displayName;
i++;
}

Log.d("COUNTS_CONTACTS", Arrays.toString(name));
当我打印出
COUNT\u联系人时

我得到了巨大的产出

[B,Bs,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,…]

对于数组大小来说,这实际上是发生的。所以,我想改变数组的大小。有多少用户拥有联系人阵列大小将与。。这就是我想要的。怎么做


我在看书。与ArrayList合作。和我一样。我也不想要
列表

您所要求的在java中是不可能的。数组具有固定大小,创建后无法更改。您有两个选择:

  • 使用列表(例如ArrayList)。语法稍显冗长,但除此之外,它们提供了您所需要的一切
  • 要调整大小时,将数组内容复制到新数组。这可以通过以下调用完成: 但是,复制阵列是一项CPU密集型操作

如果您只担心输出,还可以在打印代码中隐藏数组的一部分,但是您基本上是在重新发明轮子,*List数据结构可以做类似的事情(但非常有效)

如果您不想使用
List
,在构建阵列之前,如果不知道要创建的联系人数量,则必须构建某种特殊的逻辑

例如,您可以执行上面显示的操作,但不只是转储数组,您需要迭代,并在达到空值时停止处理:

for( String contact : name) {
    if ( contact == null) { break; }
    // do whatever with a real contact
}
如果你能保证你永远不会有超过10000个联系人,那么这就行了。一旦你接触到10001个联系人,你就必须重建和重新部署

或者,当空间不足时,可以创建一个比上一个稍大一点的新阵列。这就是
ArrayList
所做的,但将其包装在一个有用的界面中


这里的要点是:Java的集合非常有用。

我想我有一个字符串。让我们看一下
a=“name,other”
。它们的行为就像数组。但是,我将它们声明为字符串。因此,我现在可以通过
逗号/,
来分隔它们。然后,我编写了以下代码

String name = "";
while (c.moveToNext()){
     .....
.  .. . ..
 .. . 

if (name1.isEmpty()){
            name1 = displayName;
}else {
            name1 = name1 + ", " + displayName;
}
}

String[] words = line.split(",");

Log.d("COUNTS_CONTACTS", Arrays.toString(words));

然后,我得到了我想要的

使用一个变量存储数组的实际值计数。然后使用
StringBuilder
或任何其他方法连接输出字符串。(实际上,
ArrayList
就是这样做的)


但是,使用
java.util的
集合
映射
来管理数据结构没有任何好处,谢谢!我明白逻辑