Android最大arraylist大小

时间:2015-11-11 07:57:16

标签: java android

我正在从SQLite中读取某个Files的名字,我有3000个名字被添加到ArrayList但我发现我无法拥有更多超过1000。 ArrayList<String>的最大大小是1000吗?通过互联网搜索,我发现这取决于。

我在这里发现了一些数学运算(http://www.coderanch.com/t/524745/java/java/Maximum-capacity-arrayList-String-objects)和1000,我发现ArrayList<String>的最大容量由Java虚拟机内存给出。

有没有办法增加这个?

1 个答案:

答案 0 :(得分:1)

我创建了一个arrayList,它是无限的。你也可以根据自己的意愿操纵它,它具有arraylist的所有基本功能。

这是代码。

public class BetterArray<E> {

private E[] array;
private final int DEFAULT_ARRAY_SIZE = 10;
private int size;

private void copyArray(E[] copyFrom, E[] copyTo) {
    for (int i = 0; i <= copyFrom.length-1; i++) {
        copyTo[i] = copyFrom[i];
    }
}

private void createAnotherArray(){
    int newSize = 2 * array.length;
    E[] newArray = (E[])(new Object[newSize]);
    copyArray(array, newArray);
    array = newArray;
}

public BetterArray() {
    array = (E[]) (new Object[DEFAULT_ARRAY_SIZE]);
    this.size = 0;
}


public E get(int index){
    if(index < 0 || index > size){
        throw new RuntimeException("index not valid");
    }
    else{
        return array[index];
    }

}


public boolean isEmpty() {
    if (size == 0)
        return true;
    else
        return false;
}



public void insert(int position, E element) {
    if(isFull())
        createAnotherArray();

    E previous_temp = get(position);
    array[position]= element;
    for(int k = position+1; k<= size; k++){
        E current_temp = get(k);
        array[k] = previous_temp;
        previous_temp = current_temp;
    }
    size++;
}

public void append(E element) {
    insert(size, element);
 }

public void remove(int index){
    for (int i = index; i <= size-1; i++){
        array[i] = get(i+1);
    }
    size--;
}

public void shift(E element){
    insert(0, element);
}



public boolean isFull() {
    if (size == array.length)
        return true;
    return false;

}

public int size(){
    return size;
}


public String toString(){
    StringBuilder returnString = new StringBuilder();
    for(int i= 0; i <= size-1; i++){
        returnString.append(get(i).toString() + ", ");
    }
    return returnString.toString();
}


//  public int index(E element){
//      return 1;
//  }


public void reverse(){
    E temp_storage;
    int halfSize = (size/2) ;
    for (int k= 0; k<= halfSize; k++ ){
        temp_storage = array[k];
        array[k] = array[size-k-1];
        array[size-k-1]  = temp_storage;
    }

}



  }