集合概念、Collection接口( List接口、Queue接口、Set接口)、Map接口、泛型机制

*集合概念:
        用于存储多个对象的单一对象(容器)。存储的数据叫元素。
        元素都是引用类型。

      (    用于模拟现实生活中的存储容器,因此集合类型,不单单是一种。
           有很多类型,设计成各种存储的数据结构。这些类型统称为集合框架   )       
 
 --元素:必须是引用数据类型的数据,不能是基本数据类型的数据。

JDK1.5新特性:
              在1.5以前,容器可以存储Object的任何子类型,但是在对元素进行
              操作时,比如调用元素的方法等。我们必需知道元素的类型,因此
              在编程中增加了大量代码,来进行强制转换,增加了开发难度。
              因此1.5开始支持了一个新特性,叫[泛型机制]。用来规定容器中
              存储的元素的类型。此机制可以在编译期间就进行判断元素的类型。
=========================================================================

*集合与数组的区别:
      数组:可以存储基本数据类型,也可以存储引用数据类型
      集合:只能存储引用数据类型   

=========================================================================  


*Collection接口:
        是集合框架的顶级父接口,用来定义常用的抽象方法。
        子类需要实现相应的方法逻辑。
    
 --常用方法:
    boolean add(E e):
                   将对象e添加到集合中
    int size(): 
                   返回集合元素的个数
    boolean addAll(Collection c):
                   将集合c里的元素添加到此集合中
    void clear():
                   清空集合元素
    boolean contains(Object obj):
                   用于判断集合中是否存在于obj相同的元素
    boolean containsAll(Collection c)            
                   用于判断此集合中是否包含集合c中的所有元素
    boolean isEmpty():
                   用于判断集合元素是否为空
    boolean remove(Object o)
                   用于移除集合中的某一元素
    boolean removeAll(Collection c)
                   用于移除此集合中与c中共有元素
    boolean retainAll(Collection c); 
                   用于保留此集合中与c中共有元素 

    ###子接口:List, Set, Queue
    
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
一、List:列表
             此接口对应的实现类的特点都是:有序的,可以重复的
             重复与否与元素的equals方法有关
  
       常用方法:
       void add(int index,E element): 
                         将某一元素,插入到此集合的下标index处。
       E    get(int index):
                         返回指定下标上的元素 
       int indexOf(Object obj):
                         返回指定元素第一次出现的位置。如果没有,返回-1.

      E set(int index,E newElement):
                         使用新元素newElement替换下标index上的元素,返回原元素。
      boolean remove(int index):
                         移除此集合中下标为index上的元素   
      List<E> subList(int fromIndex,int endIndex):
                         截取此集合中的一部分,即截取子集,从fromIndex到endIndex
                         "包前不包后" 
             PS:此方法在堆中不会产生新的集合对象。
                   变量引用的父集的一部分。
                   修改子集,会影响父集         
      int lastIndexOf(Object obj):
                         返回此集合指定元素obj最后一次出现的下标。找不到返回-1.  
                                            
   --java 8 为List集合增加了sort()和replaceAll()两个常用的默认方法。
               sort():
                       方法需要一个Comparator对象(函数式接口)来控制元素升序;
                       规则:字符串长度越长,字符串越大,再以升序排列。
                       
                replaceAll():
                       方法需要一个UnaryOperator对象(函数式接口)来替换所有集合元素。
                       规则:直接用集合元素(字符串)的长度作为新的集合元素。
                       
     
                      所以,可以使用Lambda表达式来创建该函数式接口的对象。                                                            

--------------------------------------------------------------------------
*使用Lambda表达式遍历集合:
          利用forEach(Consumer action)
          
*使用java 8 增强的Iterator遍历集合元素:
    4种方法  
            
*使用Lambda表达式遍历Iterator(迭代器接口):
          利用forEachRemaining(Consumer action)
          
*使用foreach()循环遍历集合元素:
    for(Object obj : books)      

--------------------------------------------------------------------------------------------------             
*List的三个实现类:
       (1)ArrayList
                   底层是基于动态数组的数据结构.是有存放顺序的.          
       (2)LinkedList
                   底层是基于双链表的数据结构.每一个存储单元,都涉及到其他两个引用.
                  【除此之外,LinkedList还实现了Deque接口,可以被当成双端队列来使用。
                      因此,既可以被当成栈来使用,也可以被当成队列使用。】    
                      
                   优缺点: 在执行get()/set()时,ArrayList的效率高,LinkedList需要移动指针,效率低
                                    在增加/删除操作时,LinkedList效率高,ArrayList效率低(需要扩容,移动元素)
        
                    ps:当然,在元素的数量大的情况下,区别才明显。         

     (3)Vector:是一个比较古老的集合类型,
                                        线程安全,但是效率特别低&#x

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值