在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的集合
或映射
来管理数据结构没有任何好处,谢谢!我明白逻辑