• 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 一样。

     

  • 相关阅读:
    nginx:font-awesome图标刷新后显示不了
    nginx:用openssl生成证书
    安全:http host头攻击漏洞
    js:获得屏幕的宽高
    java中URLEncode与Delphi中关系
    Error during WebSocket handshake: Unexpected response code: 404
    byte数组与MultipartFile相互转化
    Java字符串或数组去掉前后的中括号标签
    IDEA运行新项目时报 Error running ‘XXApplication‘: Command line is too long. Shorten command line for…… 错误
    (转)ElasticSearch中"distinct","count"和"group by"的实现
  • 原文地址:https://www.cnblogs.com/pengranxindong/p/9964678.html
Copyright © 2020-2023  润新知