zoukankan      html  css  js  c++  java
  • 【java读书笔记】——Collection集合之六大接口(Collection、Set、List、Map、Iterator和Comparable)

           两个月之前准备软考时,简单的从理论上总结了最经常使用的数据结构和算法,比方:线性表链表。在进行java开发时,jdk为我们提供了一系列对应的类来实现主要的数据结构。jdk所提供的容器API位于java.util包内。本文主要是通过简单的介绍Collection集合,向读者简单阐述各个类的基本定义以及其作用,为后面的学习做一下铺垫。


    首先,我们先看一下Collection集合的基本结构:

           

    1、Collection接口

           Collection是最基本集合接口,它定义了一组同意反复的对象。Collection接口派生了两个子接口Set和List,分别定义了两种不同的存储方式,例如以下:

     

    2、 Set接口

           Set接口继承于Collection接口,它没有提供额外的方法,但实现了Set接口的集合类中的元素是无序且不可反复。

           特征:无序且不可反复。

     

    3、  List接口

            List接口相同也继承于Collection接口,可是与Set接口恰恰相反,List接口的集合类中的元素是对象有序且可反复。

           特征:有序且可反复

           两个重要的实现类:ArrayList和LinkedList

           1.ArrayList特点是有序可反复

           2.LinkedList是一个双向链表结构的。

     

    4、Map接口

           Map也是接口,但没有继承Collection接口。该接口描写叙述了从不反复的键到值的映射。Map接口用于维护键/值对(key/value pairs)。

           特征:它描写叙述了从不反复的键到值的映射。

           两个重要的实现类:HashMap和TreeMap

           1.HashMap,中文叫散列表,基于哈希表实现,特点就是键值对的映射关系。一个key相应一个Value。HashMap中元素的排列顺序是不固定的。更加适合于对元素进行插入、删除和定位。

           2.TreeMap,基于红黑书实现。TreeMap中的元素保持着某种固定的顺序。更加适合于对元素的顺序遍历。


    5、Iterator接口

           Iterator接口,在C#里有例外一种说法IEnumerator,他们都是集合訪问器,用于循环訪问集合中的对象。
          全部实现了Collection接口的容器类都有iterator方法,用于返回一个实现了Iterator接口的对象。Iterator对象称作迭代器,
    Iterator接口方法能以迭代方式逐个訪问集合中各个元素,并能够从Collection中除去适当的元素。

          

    <span style="font-size:10px;">Iterator it = collection.iterator(); // 获得一个迭代子  
    while(it.hasNext())   
    {  
    Object obj = it.next(); // 得到下一个元素  
    } </span>

     

    6、Comparable接口

          Comparable能够用于比較的实现,实现了Comparable接口的类能够通过实现comparaTo方法从而确定该类对象的排序方式。


    总结

     

           Collection集合分别派生自Collection和Map接口,Collection有两个经常使用子接口List和Set,分别表示有序可反复,无序不可反复的集合。而Map存储的是key-value的映射。


            上面的总结看上去非常多,非常繁琐,事实上你仅仅要记得一点:collection是用于处理各种数据结构的,依据各种数据结构的特点理解,一切都会变简单。


          尽管此博客有点糙,也希望能帮助你对集合的理解有一点点作用(尤其是对组织中人)。以下的博文,我会更新一些有关线程的基础知识,请继续关注。



  • 相关阅读:
    js中return false,return,return true的用法及区别
    C#中关于页面缓存
    项目运行时出现webconfig="machineApplication......."之类的错误
    后台页面无法找到前台页面控件的ID
    .NET对文件的多种操作
    前台JS代码向后台传递参数
    多条件查询的Gridview分页显示
    C#中对数据做视图处理RowFilter
    JavaScript自触发时的参数传递
    Sys.WebForms.PageRequestManagerTimeoutException:服务器请求超时
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/4017801.html
Copyright © 2011-2022 走看看