在不使用集合的情况下实现自己的ArrayList <>

C g*_*ics 5 java collections arraylist

我试图实现我自己的ArrayList而不使用java集合进行练习.在这个阶段我想实现两个主要方法,add(E)和get(int)tp得到这个想法.我的代码如下.但是我遇到了一些问题:

  1. 行"return(E)myData [index]"发出警告"类型安全:未选中从对象转换为E".我该如何解决这个问题
  2. ArrayList.add(T)的Java 7实现返回一个布尔值.在什么情况下add()必须返回false.在什么逻辑下它返回false并且返回true时?
  3. 我在哪里可以找到ArrayList的java 7实现的源代码

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

    }
}
Run Code Online (Sandbox Code Playgroud)

Sot*_*lis 3

“return (E) myData[index]”行发出警告“类型安全:未检查从对象到 E 的转换”。我该如何解决这个问题

抑制警告

@SuppressWarnings("unchecked")
Run Code Online (Sandbox Code Playgroud)

Java 7 实现ArrayList.add(T)返回一个boolean. 什么情况下add()必须返回false。它按照什么逻辑返回false以及何时返回true

请参阅javadoc

返回:( true由 指定Collection.add(E)

它总是会回来true

在哪里可以找到java 7实现ArrayList的源代码

在 JDK 安装的src.zip存档中或通过简单搜索在线找到它

java ArrayList 源代码