我正在玩數組和迭代器。我不想使用集合。只需簡單的迭代器和由我自己定義的方法。 我有一組學生在數組中(數組的大小等於學生人數),他們按照時間順序(按學生索引(ID)號碼123456,162475在構造函數等)。所以我想創建比前一個更大的新數組(通過一個元素)並添加新學生,但是要保存時間順序。我有創建更大的數組並覆蓋舊的引用的方法,但我不知道如何使用迭代器在特定位置添加元素。對數組[i + 1] = array [i]使用for()會很容易,但我不知道如何用iterator來完成。如何使用Java中的Iterator將元素添加到數組的中間?
這是我的代碼的一部分:
public class GrupaStud {
public static void main(String[] args) {
Student [] s = new Student[5];
s[0]=new Student("Katarzyna", "Gryzipiórko", 123456, 5);
s[1]=new Student("Bartosz", "Polański", 162475, 4);
s[2]=new Student("Heniek", "Zając", 175642, 3);
s[3]=new Student("Konstanty", "Mołotow", 432156, 2);
s[4]=new Student("Bogdan", "Cichowlaz", 666555, 2.5);
ArrayIterator itab = new ArrayIterator(s);
s = biggerArray(s);
itab = new ArrayIterator(s);
Student nowy =new Student("Małgorzata", "Kopytko", 165642, 4);
for (itab.first(); !itab.isDone(); itab.next()) {
Student st = (Student) itab.current();
//in my mind that if need to check if index number of current element is bigger than
//int index above (165642) , but exactly here I don't know, how to add Student nowy
//to the array with moving rest of elements
if (st.nrIndex >nowy.nrIndex)
}
}
public static Student[] biggerArray(Student[] s)
{
Student[] newArray = new Student[6];
for (int i=0; i<s.length; i++)
newArray[i] = s[i];
return newArray;
}
}
嗯......第二個命題中的「大小」是什麼意思? – RIPI
是的,忘記了這是硬編碼。應該是5,'size-index'試圖獲取自插入項目*之後需要複製的項目數。 – femtoRgon
是的:)你的代碼還有一個錯誤,但我修復了它的文檔後。它應該是System.arraycopy(...),但我的代碼正在工作,並且該人被正確添加:)謝謝:)現在我需要仔細考慮,它是如何工作的,因爲它很聰明:) – RIPI