zoukankan      html  css  js  c++  java
  • java

    集合的由来:

      数组长度是固定,当添加的元素超过了数组的长度时需要对数组重新定义,java内部提供了集合类,能存储任意对象,长度是可以改变的,随着元素的增加而增加,随元素的减少而减少

     

    数组和集合的区别:

      1.数组既可以存储基本数据类型,又可以存储引用数据类型

       集合只能存储引用数据类似(对象)。集合中也可以存储基本数据类型,但是在存储的时候会自动装箱变成对象

      2.数组长度是固定的,不能自动增长

         集合的长度是可变的,不能自动增长

    数组和集合什么时候用

      1.如果元素个数是固定的,推荐用数组

      2.如果元素个数不是固定的推荐用集合

    集合体系图:

    Collection 单例集合的根接口
     List  如果是实现了List接口的集合类,具备的特点: 有序,可重复。 
       ArrayList  ArrayList 底层是维护了一个Object数组实现的。 特点: 查询速度快,增删慢。
       LinkedList LinkedList 底层是使用了链表数据结构实现的, 特点: 查询速度慢,增删快。
       Vector(了解即可)  底层也是维护了一个Object的数组实现的,实现与ArrayList是一样的,但是Vector是线程安全的,操作效率低。


     Set  如果是实现了Set接口的集合类,具备的特点: 无序,不可重复。
       HashSet  底层是使用了哈希表来支持的,特点: 存取速度快. 
       TreeSet   如果元素具备自然顺序 的特性,那么就按照元素自然顺序的特性进行排序存储。
      

    int size()    获取元素个数

    boolean isEmpty()  是否个数为 0

    boolean contains(Object element)  是否包含指定元素

    boolean add(E element)  添加元素,成功时返回 true

    boolean remove(Object element)  删除元素,成功时返回 true

    Iterator<E> iterator()  获取迭代器

    boolean containsAll(Collection<?> c)   是否包含指定集合 c 的全部元素

    boolean addAll(Collection<? extends E> c)   添加集合 c 中所有的元素到本集合中,如果集合有改变就返回 true

    boolean removeAll(Collection<?> c)   删除本集合中和 c 集合中一致的元素,如果集合有改变就返回 true

    boolean retainAll(Collection<?> c)   保留本集合中 c 集合中两者共有的,如果集合有改变就返回 true

    void clear()   删除所有元素

    成员方法 :

      toArray:将集合转换成数组(会将对象变为Object,需要向下转型才能调用内部特有方法)

      Arrays.aslist(array) 将数组转化为集合

     

    迭代器:

      迭代器概述:

        集合是用来存储元素,存储的元素需要查看,那么就需要迭代(遍历)

      迭代器原理:

        迭代器是对集合进行遍历,而每一个集合内部的存储结构都是不同的,所以每一个集合存和取都是不一样,那么就需要在每一个类中定义hasNext()和Next()方法,这样做也是可以的,但是会让整个集合体系过于臃肿,迭代器是将这样的方法向上抽取出接口,然后在每个类的内部,定义自己迭代方式,这样做的好处有2个:1规定了整个集合体系的方法都是hasNext()和next()。2代码底层内部实现,使用者不用管怎么实现,会用即可

      

       it.remove() 删除最后操作的元素.


      list接口:

        add(int index,E element)  在指定位置添加

        remove(int  index)  根据索引删除

        get(int  index)  根据索引获取

        set(int index, E element)  指定位置修改

    ListIterator:在list迭代中可操作

      void hasPrevious()   判断游标前面是否有元素;

      Object previous()   返回游标前面的元素,同时游标前移一位。游标前没有元素就报 java.util.NoSuchElementException 的错,所以使用前最好判断一下;

      int nextIndex()   返回游标后边元素的索引位置,初始为 0 ;遍历 N 个元素结束时为 N;

      int previousIndex()   返回游标前面元素的位置,初始时为 -1,同时报 java.util.NoSuchElementException 错;

      void add(E)   在游标 前面 插入一个元素     注意,是前面

      void set(E)   更新迭代器最后一次操作的元素为 E,也就是更新最后一次调用 next() 或者 previous() 返回的元素。注意,当没有迭代,也就是没有调用 next() 或者 previous() 直接调用 set 时会报 java.lang.IllegalStateException 错;

      void remove()   删除迭代器最后一次操作的元素,注意事项和 set 一样。

     

  • 相关阅读:
    儿童教育:孩子要买东西,怎么办?
    儿童教育:是否应该让他写好字
    Python on VS Code
    AI
    Java: Replace a string from multiple replaced strings to multiple substitutes
    Visual Studio 2015 Test Explorer does not show anything
    SpringIOC容器创建过程
    spring的组件工厂后置处理器——BeanFactoryPostProcessor
    spring与quartz的整合
    启动tomcat报错One or more listeners failed to start,却找不到任何错误日志的临时解决方案
  • 原文地址:https://www.cnblogs.com/pengranxindong/p/9964678.html
Copyright © 2011-2022 走看看