Java集合总结

一、AarrayList集合:

AarrayList<E>:存在多个同一类型的数据

ArrayList:底层是数组,封装了数组,提供了更多的功能(方法)。

ArrayList集合继承了AbstractList类,实现了List、RandomAccess、Cloneable和java.io.Serializable接口。

成员方法:

//返回值表示新增是否成功
 boolean add(E e);//E表示什么类型:创建对象的时候,尖括号中写的是什么类型,E就是什么类型
 E get(int index);E remove(int index);//根据索引值删除元素,返回被删除的元素
 boolean remove(Object obj);//删除被参数元素,返回删除是否成功
 int size();//获取元素的个数
 
 //如果要找的元素不存在,则返回-1
 int indexOf(Object obj);//获取元素第一次出现的索引值位置
 int lastIndexOf(Object obj);//获取元素最后一次出现的索引值位置
 E set(int index,E newElement);//把index位置的元素替换为newElement,返回被替换的元素
 boolean contains(Object obj);//是否包含 参数元素,包含返回true,反之false

 二、单列集合(Collection<E>接口):

    Collection<E> 接口是单列集合的总接口:

        Collection接口的实现子类可以存放多个元素,每个元素可以是Object

        有些Collection接口的实现类,可以存放重复的元素,有些不可以

        有些Collection接口的实现类,是有序的(List),有些不是有序的(Set)

        Collection接口没有直接的实现子类,是通过它的子接口Set 和 List来实现的

     Collection<E>接口中的方法:
                  boolean add(E e);//添加元素
                  boolean remove(Object obj);//删除元素
                  boolean contains(Object obj);//判断是否包含元素
                  boolean isEmpty();//是否有元素,有元素false,没有元素是true
                  int size();  //获取元素个数
                  void clear(); //清空所有元素
           
      Object[] toArray();返回一个新的数组,该数组包含原容器的所有元素,并保证原来的                    顺序,对返回的数组的任何修改不影响原容器
                  

三、List,Set集合:

常用实现类:

   List接口:有索引值、可以重复、有序
                      ArrayList:底层是数组,特点,查询快 增删慢
                      LinkedList:底层是链表,特点,查询慢 增删快
                      Vector(较少使用):和ArrayList类似。
                      Vector:线程安全,效率低。
                      ArrayList:线程不安全,效率高

常用实现类:

   Set接口:没有索引值,不可以重复
                      HashSet(无序):底层是哈希表
                      LinkedHashSet(有序):底层是链表+哈希表
                      TreeSet(可排序):底层是红黑树
                      Hashtable:和HashSet类似。
                      Hashtable:线程安全,效率低。
                      HashSet:线程不安全,效率高

  Set新增过程:
                  计算新增元素的哈希值(十进制的地址值),调用hashCode();//Object父类的方法
                  通过哈希值%数组长度,去确定元素新增的索引值位置
                  如果该位置没有元素:直接新增
                  如果该位置有元素:判断这两个元素是否相同
                  如果不相同:挂到最后一个元素下面
                  如果相同:不新增

                  判断是否相同的标准:
                  比较哈希值相同 && (地址值相同 || equals相同)

   List<E>接口中的方法:
             void add(int index,E e);//添加元素
              E remove(int index);//删除元素
              E get(int index);//获取指定位置的元素
              E set(int index,E e);//替换元素
              List<E> subList(int beginIndex,int endIndex);//截取元素
              int indexOf(Object o);//返回此列表中指定元素最后一次出现的索引,如果此列表不包含                该元素,则返回 -1
              int lastIndexOf(Object o);

LinkedList<E>独有的成员方法:
              void addFirst(E e);//向链表的头添加新节点

              void addLast(E e);//向链表的末尾添加新节点
              String removeFirst();//删除第一个节点
              String removeLast();//删除最后一个节点
              String getFirst();//获取链表第一个节点中的对象
              String getLast();获取链表最后一个节点中的对象

 四、Map集合

        Map集合石双列集合的总接口:

        常用实现类:        
              HashMap:底层是哈希表。无序
              LinkedHashMap:底层是链表+哈希表。有序
              TreeMap:底层是红黑树。可排序
              Hashtable:线程安全,效率低
              HashMap:线程不安全,效率高

成员方法:

              V put(K k,V v);//如果K存在,则新的V替换旧的V,返回被替换的V。
              V remove(Object key);//删除元素,       
              V get(Object key);//根据key获取V,如果key不存在则返回null
              boolean containsKey(Object key);//判断key是否存在
              boolean containsValue(Object value);//判断V是否存在                                                                  Set<K> keySet();获取所有的K
              Set<Entry<K,V>> entrySet();获取所有的entry
              Collection<V> values();获取所有的V
              boolean isEmpty();//判断集合是否为空
              void clear();//清空元素
             int size();//获取集合中元素的个数     

 

  • 10
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值