java学习_5_23
Posted ustc-anmin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java学习_5_23相关的知识,希望对你有一定的参考价值。
Collection接口中定义的方法如下,所有继承自Collection接口的接口(List,Set)的实现类均实现了这些方法。
List容器是有序、可重复的,常用的实现类:ArrayList,LinkedList,Vector(线程安全的)
带索引的add,remove操作。
自己实现的MyArrayList:
package test.stringTest; public class MyArrayList<E> { private Object[] elementData; // 元素个数 private int size; // 数组默认长度 private final static int DEFAULT_CAPACITY = 10; public MyArrayList() { elementData = new Object[DEFAULT_CAPACITY]; } public MyArrayList(int length) { if (length <= 0) throw new RuntimeException("容器容量值需为正整数:" + length); elementData = new Object[length]; } public void add(E element) { if (size == elementData.length) grow(); elementData[size++] = element; } @SuppressWarnings("unchecked") public E get(int index) { if (indexInRange(index)) return (E) elementData[index]; else throw new RuntimeException("索引越界:" + index); } public void remove(E element) { int index = -1; for (int i = 0; i < size; i++) { if (element.equals(elementData[i])) { index = i; break; } } if (index != -1) { remove(index); } } public void remove(int index) { if (!indexInRange(index)) { throw new RuntimeException("索引越界:" + index); } int numMoved = elementData.length - index - 1; if (numMoved > 0) { System.arraycopy(elementData, index + 1, elementData, index, numMoved); } else { elementData[index] = null; } size--; } private boolean indexInRange(int index) { return index < size && index >= 0 ? true : false; } public int size() { return size; } public boolean isEmpty() { return size == 0 ? true : false; } // 数组扩容 private void grow() { Object[] newArray = new Object[elementData.length + (elementData.length >> 1)]; System.arraycopy(elementData, 0, newArray, 0, elementData.length); elementData = newArray; } @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("["); for (int i = 0; i < size; i++) { sb.append(elementData[i].toString() + ","); } sb.setCharAt(sb.length() - 1, ‘]‘); return sb.toString(); } public static void main(String[] args) { MyArrayList<String> list = new MyArrayList<>(20); int i = 0; while (i <= 50) { list.add("aaa" + i); i++; } System.out.println(list); System.out.println(list.get(31)); System.out.println(list.size()); list.remove(21); list.remove("aaa4"); System.out.println(list); System.out.println(list.size); System.out.println(list.isEmpty()); } }
以上是关于java学习_5_23的主要内容,如果未能解决你的问题,请参考以下文章
大数据技术之_23_Python核心基础学习_03_函数 + 对象(12.5小时)