How to add new elements to an array?

后端 未结 18 1917
误落风尘
误落风尘 2020-11-22 04:55

I have the following code:

String[] where;
where.append(ContactsContract.Contacts.HAS_PHONE_NUMBER + \"=1\");
where.append(ContactsContract.Contacts.IN_VISIB         


        
18条回答
  •  故里飘歌
    2020-11-22 05:18

    Use a List, such as an ArrayList. It's dynamically growable, unlike arrays (see: Effective Java 2nd Edition, Item 25: Prefer lists to arrays).

    import java.util.*;
    //....
    
    List list = new ArrayList();
    list.add("1");
    list.add("2");
    list.add("3");
    System.out.println(list); // prints "[1, 2, 3]"
    

    If you insist on using arrays, you can use java.util.Arrays.copyOf to allocate a bigger array to accomodate the additional element. This is really not the best solution, though.

    static  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]"
    

    This is O(N) per append. ArrayList, on the other hand, has O(1) amortized cost per operation.

    See also

    • Java Tutorials/Arrays
      • An array is a container object that holds a fixed number of values of a single type. The length of an array is established when the array is created. After creation, its length is fixed.
    • Java Tutorials/The List interface

提交回复
热议问题