Java集合框架学习:01

Java集合框架学习:01

  • Java集合框架:

    • 集合框架被设计成要满足以下几个目标:

      • 该框架必须是高性能的;基本集合(动态数组,链表,树,哈希表)的实现也必须是高校的;

      • 该框架允许不同类型的集合,以类似的方式工作,具有高度的互操作性;

      • 对一个集合的扩展和适应必须是简单的;

         

  • Java集合框架主要包括2种类型的容器:

    • 一种是集合(Collection),存储一个元素集合;

    • 另一种是图(Map),存储键/值对映射;

    • Collection接口又有3种子类型,List,Set和Queue,再下面是一些抽象类,最后是具体的实现类;

    • 常用的集合实现类:ArrayList ,LinkedList , HashSet ,LinkedhashSet ,HashMap ,LinkedHashMap等;

 

  • 集合框架是一个用来代表和操作集合的统一架构,所有的集合框架都包含如下内容:

    • 接口:

      • 是代表集合的抽象数据类型,例如:Collection, List ,Set ,Map等;

      • 之所以定义多个接口,是为了满足不同的方式操作集合对象;

    • 实现类:

      • 是集合接口的具体实现;从本质上说,他们是可重复使用的数据类型;

      • 例如:ArrayList , LinkedList ,HashSet , HashMap等

    • 算法:

      • 是实现集合接口的对象里的方法执行的一些有用的计算;

      • 例如:搜索和排序;这些算法被称为多态;

 

  • 除了集合,该框架也定义了几个Map接口和类,Map里存储的键/值对,尽管Map不是集合,但是他们完全整合在集合中;

 


  • 集合接口:

    • 集合框架定义了一些接口:具体如下:

      序号接口描述
      1 Collection接口: Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素,Java不提供直接继承自Collection的类,只提供继承它的子接口(List和Set) Collection接口存储一组不唯一,无序的对象;
      2 List接口: LIst接口是一个有序的Collection,使用此接口能够精确的控制每个元素插入的位置,能够通过索引来访问List中的元素,第一个元素的索引是0,而且允许有相同的元素; LIst接口存储一组不唯一,有序(插入顺序)的对象;
      3 Set接口: Set具有与Collection完全一样的接口,只是行为上不同,Set不保存重复的元素; Set接口存储一组唯一,无序的对象;
      4 SortedSet接口: 继承于Set保存有序的集合;
      5 Map接口: Map接口存储一组键值对象,提供key到value的映射;
      6 Map.Entry: 描述在一个Map中的一个元素(键值对),是一个Map的内部接口;
      7 SortedSet: 继承于Map,使key保持在升序排列;
      8 Enumeration: 已经被迭代器取代;

      总结:Set和List的区别:

      • Set接口存储唯一,但无序的数据;List存储的是有序,但不唯一的数据;

      • Set检索效率低下,删除和插入效率高;插入和删除不会引起元素位置改变;

      • List和数组类似,可以动态增长,根据实际存储数据的长度自动增长List的长度;查找效率高,插入和删除效率低,因为会引起其他元素位置改变;

         

  • 集合实现类:

    • Java提供了一套实现了Collection接口的标准集合类;

      序号类描述
      1 AbstractCollection: 实现了大部分的结合接口;
      2 AbstractList: 继承于AbstractCollection并且实现了大部分List接口;
      3 AbstractSqquentialList: 继承于AbstractList,提供了对数据元素的链式访问而不是随机访问;
      4 LinkedList: 该类实现了List接口,允许有null元素,主要用于创建链表数据结构,该类没有同步方法,如果多个线程同时访问一个List,则必须自己实现访问同步,解决方法就是在创建List时候构造一个同步的List; LinkedList查找效率低;
      5  
      6  
      7  
      8  
      9  
      10  
         
         
         
         
    • 笔记:

      • 先继续学习,其他后补;

 

  • 集合算法:

 

  • 如何使用迭代器:

    • 代码案例:

      public class ListDemo01 {
         public static void main(String[] args) {

             //创建集合
             ArrayList<String> arrayList=new ArrayList<>();
             arrayList.add("Google");
             arrayList.add("baidu");
             arrayList.add("haha");

             //获取迭代器
             Iterator<String> it=arrayList.iterator();
             System.out.println(it.next());//Google

             //循环输出
             while (it.hasNext()){
                 System.out.println(it.next());//Google baidu haha
            }

        }
      }

       

 

posted @   gzs1024  阅读(60)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示