有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Android最大数组列表大小

我正在安卓系统中阅读SQLite的一些名字Files,我有大约3000个名字被添加到一个ArrayList中,但我发现我不能超过1000个。 1000是一个^{的最大大小吗?在网上搜索我发现这要看情况而定

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

有没有办法提高这一点


共 (1) 个答案

  1. # 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;
        }
    
    }
    
    
    
      }