如何向数组添加新元素?
我有以下代码:
String[] where;
where.append(ContactsContract.Contacts.HAS_PHONE_NUMBER + "=1");
where.append(ContactsContract.Contacts.IN_VISIBLE_GROUP + "=1");
这两个附件没有编译。如何正确工作?
我有以下代码:
String[] where;
where.append(ContactsContract.Contacts.HAS_PHONE_NUMBER + "=1");
where.append(ContactsContract.Contacts.IN_VISIBLE_GROUP + "=1");
这两个附件没有编译。如何正确工作?
无法修改数组的大小。如果你想要一个更大的数组,你必须实例化一个新的数组。
更好的解决方案是使用可以根据需要扩展的ArrayList
。如果您需要此形式,该方法会返回数组。ArrayList.toArray( T[] a )
List<String> where = new ArrayList<String>();
where.add( ContactsContract.Contacts.HAS_PHONE_NUMBER+"=1" );
where.add( ContactsContract.Contacts.IN_VISIBLE_GROUP+"=1" );
如果您需要将其转换为简单的数组...
String[] simpleArray = new String[ where.size() ];
where.toArray( simpleArray );
但是,使用数组执行的大多数操作也可以使用此 ArrayList 执行:
// iterate over the array
for( String oneItem : where ) {
...
}
// get specific items
where.get( 1 );
使用 List<String>
,如 ArrayList<String>
。与数组不同,它是动态增长的(参见:有效的Java 2nd Edition,第25项:更喜欢列表而不是数组)。
import java.util.*;
//....
List<String> list = new ArrayList<String>();
list.add("1");
list.add("2");
list.add("3");
System.out.println(list); // prints "[1, 2, 3]"
如果您坚持使用数组,则可以使用java.util.Arrays.copyOf
来分配更大的数组来容纳额外的元素。不过,这真的不是最好的解决方案。
static <T> T[] append(T[] arr, T element) {
final int N = arr.length;
arr = Arrays.copyOf(arr, N + 1);
arr[N] = element;
return arr;
}
String[] arr = { "1", "2", "3" };
System.out.println(Arrays.toString(arr)); // prints "[1, 2, 3]"
arr = append(arr, "4");
System.out.println(Arrays.toString(arr)); // prints "[1, 2, 3, 4]"
这是根据.另一方面,已摊销了每次操作的成本。O(N)
append
ArrayList
O(1)