手写List第二版
Posted yonim
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了手写List第二版相关的知识,希望对你有一定的参考价值。
这期比上一期更加简洁,但是功能更加完善,该加的异常处理也都加上了
class ListArrays implements Lists{ private Object[] data; // 集合大小 private int size; // 集合使用大小 private int index; // 初始化数组 public ListArrays() { size = 10; data = new Object[size]; } public ListArrays(int ArrarNum) { indexCheck(ArrarNum); data = new Object[ArrarNum]; } @Override public boolean equals(Object obj) { return super.equals(obj); } @Override public int size() { return size; } @Override public boolean isEmpty() { if(size() != 0) { return true; } return false; } @Override public void add(Object e) { IsExpansion(index); data[index] = e; ++index; } @Override public void add(int index, Object element) { indexCheck(index); data[index] = element; } @Override public boolean remove(Object o) { return false; } @Override public void remove(int index) { indexCheck(index); int numMoved = size - index - 1; if (numMoved > 0) // System.arraycopy(需要copy到某个数组, 从copy到的数组下标起步位置, 被copy 的数组, 开始, 结束); System.arraycopy(data, index+1, data, index, numMoved); data[--index] = null; } @Override public void clear() { index = 0; size = 10; data = new Object[size]; } @Override public Object get(int index) { indexCheck(index); return data[index]; } @Override // 数据插入 public void set(int index, Object obj) { indexCheck(index); int numMoved = size - index - 1; if (numMoved > 0) data[index] = obj; // System.arraycopy(需要copy到某个数组, 从copy到的数组下标起步位置, 被copy 的数组, 开始, 结束); System.arraycopy(data, index, data, index+1, numMoved); ++index; } @Override public int indexOf(Object o) { int j = 0; for (int i = 0; i < data.length; i++) { if (data[i] == o) { j=i; } } return j; } @Override // 数组截取 public Object[] subList(int fromIndex, int toIndex) { return Arrays.copyOfRange(data, fromIndex,toIndex); } // 索引检查 private void indexCheck(int index) { if(index > size || index < 0) { try { throw new Exception(); } catch (Exception e) { e.printStackTrace(); System.out.println("索引不能大于数组长度切不能小于0"); } } } @SuppressWarnings("unused") private int getIndex() { return index; } // 是否进行扩容 private void IsExpansion(int index) { if(index == size) { Object[] obj = new Object[size*2+1]; obj = Arrays.copyOf(data,size); data = obj; } } }
以上是关于手写List第二版的主要内容,如果未能解决你的问题,请参考以下文章