我想實現我自己的ArrayList而不使用Java集合用於實踐目的。在這個階段,我想實現兩個主要的方法,添加(E)和get(int)tp得到這個想法。我的代碼如下。但是我遇到的幾個問題:在不使用集合的情況下實現自己的ArrayList <>
- 線「返回(E)MYDATA的[指數]」警告「類型安全:未選中從對象轉換爲E」的問題。我如何解決這個問題
- ArrayList.add(T)的Java 7實現返回一個布爾值。在什麼情況下,add()必須返回false。在什麼邏輯下它返回false,何時返回true?
- 我在哪裏可以找到Java 7中執行的ArrayList
PS的源代碼。請不要回答問題3,並將我轉到一,二的蔗糖代碼!
import java.util.Arrays;
public class MyArrayList<E>{
private final int DEFAULT_SIZE=2;
private Object[] myData = new Object[DEFAULT_SIZE];
private int actSize=0;
public boolean add(E data){
if (actSize>=myData.length/2){
increaseSize();
}
myData[actSize++] = data;
return true;//when can it be false?
}
private void increaseSize()throws RuntimeException{
myData = Arrays.copyOf(myData, myData.length*2);
}
public E get(int index) throws RuntimeException{
if (index >= actSize){
throw new IndexOutOfBoundsException();
}
return (E) myData[index];
}
public static void main(String[] args) {
MyArrayList<String> arList = new MyArrayList<>();
arList.add("Hello");
arList.add("Bye bye!");
System.out.println(arList.get(1));// prints Bye bye! which is correct
}
}
如果你下載[JDK](http://www.oracle.com/technetwork/java/javase/downloads/index.html),你可以找到源代碼在$ JDK_HOME/src.zip。如果您沒有JDK,則可以使用http://grepcode.com/這樣的網站。 – Jeffrey
您是否正在實施*列表? – aliteralmind
http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/7-b147/java/util/ArrayList.java?av=f –