admol


欢迎大家关注我的个人博客—精灵王,获取更好的阅读体验以及最新的文章分享~

 

List

public interface List<E>extends Collection<E> 有序的 collection(也称为序列),允许重复的元素。 常用实现类:

  • ArrayList: 底层使用的是数组结构,特点:查询速度快,增删操作较慢,而且线程不同步. 要保证同步,可以使用:List list = Collections.synchronizedList(new ArrayList());进行包装,默认容量为10. 常用方法:add,addAll,remove,indexOf,subList,contains,isEmpty

    List<String> list = new ArrayList<String>();
    list.add("0");
    list.add("1");
    list.add("2");
    list.add("3");
    list.add("4");
    for (int i = 0; i < list.size(); i++) {
    list.remove(i);
    }
    System.out.println(list);

     

    容易忽略的方法:trimToSize()//修正容量大小,用多少,给多少,
    ensureCapacity(int minCapacity)//预设大小

    自定义ArrayList:

    /**
    * 简单模拟ArrayList
    * @author admol
    */
    public class MyArrayList {
    private Object[] data;
    private int size;

    public MyArrayList() {
    this(10);
    }

    public MyArrayList(int i) {
    data = new Object[i];
    }

    /**
    * 返回拥有的元素数
    * @return
    */
    public int size() {
    return size;
    }

    /**
    * 获取指定位置上的元素
    * @param i
    * @return
    */
    public Object get(int i) {
    return data[i];
    }

    /**
    * 添加元素
    * @param obj
    */
    public void add(Object obj) {
    //存储空间已满,需要扩容
    if (data.length == size) {
    Object[] temp = new Object[size + (size >> 1)];
    //数组复制:(被复制的数组,从第几个元素开始复制,复制到的目标数组,粘贴的开始位置,需要复制元素个数)
    System.arraycopy(data, 0, temp, 0, size);
    data = temp;
    }
    //存储空间未满
    data[size++] = obj;
    }

    /**
    * 删除指定位置的元素
    * @param i
    */
    public void remove(int i) {
    //例:共10个元素,要删除的元素下标为3,实际上是从下标4开始向下标3复制粘贴(10-3-1)元素
    System.arraycopy(data, i + 1, data, i, size - i - 1);
    size--;
    }

分类:

技术点:

相关文章:

  • 2022-01-07
  • 2021-11-21
  • 2021-09-24
  • 2021-11-19
  • 2022-12-23
  • 2022-12-23
  • 2021-09-22
猜你喜欢
  • 2021-11-21
  • 2021-06-22
相关资源
相似解决方案