首页 新闻 会员 周边

(实现MyArrayList)扩展java.util.AbstractList来实现MyArrayList。研究API来学习实现;

0
悬赏园豆:15 [已解决问题] 解决于 2015-10-10 19:52

这是什么意思啊?  老师留的作业题,也不会啊!  求解啊!

诺-诺的主页 诺-诺 | 初学一级 | 园豆:161
提问于:2015-10-09 17:30
< >
分享
最佳答案
1

老师是要你扩展一个类,自己封装一些常用的操作

收获园豆:15
稳稳的河 | 老鸟四级 |园豆:4216 | 2015-10-09 17:39

你可以先继承它,随便你自己扩展一些方法

稳稳的河 | 园豆:4216 (老鸟四级) | 2015-10-09 17:43

@稳稳的河: 能帮我把MyLinkedLIst实现一下, 我借鉴一下可以么, 要拓展java.util.AbstractSequentialList

诺-诺 | 园豆:161 (初学一级) | 2015-10-10 18:20

@诺-诺: 你直接继承AbstractList实现List接口,模仿实现ArrayList,不就可以了,ArrayList你不是有源码了吗?

这里没有扩展这个AbstractList,你可以自己实现很多的方法什么的,这是模仿ArrayList的一些方法
public class MyArrayList {
 
    private Object[] datas;// 存放数据
    private int size;// 存放大小
 
    public MyArrayList() {
        this.size = 0;
        //这个地方你可以加一个常量
        datas = new Object[100000];
    }
 
    public boolean add(Object obj) {
        ensureCapacity(size + 1);
        datas[size++] = obj;
        return true;
    }
     
    public Object remove(int index){
        RangeCheck(index);
        Object oldValue =  datas[index];
 
        int numMoved = size - index - 1;
        if (numMoved > 0)
            System.arraycopy(datas, index+1, datas, index,
                     numMoved);
        datas[--size] = null;
 
        return oldValue;
    }
     
    public Object set(int index,Object obj){
        RangeCheck(index);
        Object oldValue =  datas[index];
         
        datas[index] = obj;
        return oldValue;
    }
    public int size() {
        return size;
    }
     
    public void clear(){
        for (int i = 0; i < datas.length; i++) {
            datas[i] = null;
        }
         
        size = 0;
    }
     
    public void ensureCapacity(int minCapacity) {
        int oldCapacity = datas.length;
        if (minCapacity > oldCapacity) {
            int newCapacity = (oldCapacity * 3) / 2 + 1;
            if (newCapacity < minCapacity)
                newCapacity = minCapacity;
            datas = Arrays.copyOf(datas, newCapacity);
        }
    }
     
    private void RangeCheck(int index) {
        if (index >= size)
            throw new IndexOutOfBoundsException(
            "Index: "+index+", Size: "+size);
        }
}
稳稳的河 | 园豆:4216 (老鸟四级) | 2015-10-10 18:42

@诺-诺: java.util.AbstractSequentialList这个类好一点,在链式操作方面设计的好点

稳稳的河 | 园豆:4216 (老鸟四级) | 2015-10-10 18:57

@稳稳的河: 好的, 我看看咯, 谢谢你!

诺-诺 | 园豆:161 (初学一级) | 2015-10-10 19:52
其他回答(1)
0

他是一个抽象类,你继承之后需要实现一些虚拟方法就可以了。

唯美菠萝 | 园豆:282 (菜鸟二级) | 2015-10-10 10:43
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册