调整阵列阵列的大小

时间:2013-02-03 22:04:48

标签: java arrays resizable

我正在尝试创建一个布尔方法来调整我的数组大小,如果加宽则返回true,否则返回false! 这是我到目前为止所做的,请帮助我,我不知道其余的东西:)

public class StringArray implements InterfaceStringArray{

String[] strArray; // create an array & store value
private int nElems =0;  // number of elements
final int ARRAY_MAX = 100;



    StringArray bubbleSort= new StringArray();     // create bubbleSort object
    StringArray selectSort = new StringArray();    // create selectSort object
    StringArray insertSort = new StringArray();   // create insertSort object


public void initialize (int arrSize) { //initializes an array of size=arrSize
    strArray = new String [arrSize]; 
}


public int getSize() { //returns the current array size
    return strArray.length;
}




public boolean resize(int newSize) { //returns true if successful (widening), false if narrowing
    String[] newArray = new String[ strArray.length * 2];

    for ( int x=0; x < strArray.length; x++){ // Load array
        if (newArray[x].equals(strArray[x]) )
        return true;
    }
    return false;
}

1 个答案:

答案 0 :(得分:2)

好的,即使使用ArrayList&lt;字符串&gt;对你的任务会更好,我只是试着坚持你当前的实现并重新编写 resize()方法。

/*
 *  A method to resize the array.
 *  @param  : newSize - new required size of array
 *  @return : true if widening, false if narrowing
 *
 */
public boolean resize(int newSize) { 

    boolean toReturn = true;

    // if narrowing or the size isn't being changed, return value changes to false; 
    if ( newSize <= strArray.length ){
         toReturn = false;
    }

    String[] newArray = new String[newSize];

    // yes, Java allows creating zero-sized arrays

    if(newSize != 0){

       // copying from old array to new one; it doesn't matter if this is narrowing 
       // or widening, everything that fits in will be copied
       System.arraycopy(strArray,0,newArray,0,newSize);

       // copying pointer to newArray to the variable where strArray used to be
       strArray = newArray;

    }
    return(toReturn);

}

您当前的实施与您的目标完全不同。首先,您将数组大小加倍,而不是使用参数newSize进行设置。其次,你的方法是这样的:

  • 创建一个双倍大小的数组;
  • 遍历主数组,并在每一步中将strArray中的String与newArray中的String进行比较;
  • 只要位置x上的字符串相等,就返回true;
  • 如果没有,则返回false;

注意:它总是返回false,因为newArray是空的。

关于ArrayLists的一些阅读:

不幸的是,我所知道的关于Java的最好的书是用捷克语写的,所以除非你说那种语言,否则我不能提出任何建议......