zoukankan      html  css  js  c++  java
  • 集合框架

    原文:https://blog.csdn.net/wunian_930124/article/details/60954706

    集合 ——> Collection+Map

      Collection ——> List+Set

        List:有序的,元素是可以重复的,通过索引就可以精确的操作集合中的元素,List接口的特有方法,都是围绕索引定义的。List获取元素的方式有两种:一种是迭代,还有一种是遍历+get

          1、ArrayList:是数组结构,长度是可变的,原理是(创建新数组+复制数组),查询速度快,增删较慢,不同步。ArrayList不是线程安全的,只能用在单线程环境下,多线程环境下可以考虑使用                Collections.synchronizedList(List i)函数返回一个线程安全的ArrayList类,或者使用Concurrent并发包下对应的集合类。

          2、LinkedList:是基于双向循环链表实现的,是链表结构,不同步的,增删速度快,查询较慢。由于实现了Queue接口,因此也可以用于实现堆栈、队列。

          3、Vector:可以增长的数组结构,同步的,效率很低,查询增删凑慢,已过时。

        Set:不允许包含重复的元素(通过hashcode和equals函数保证),不保证顺序,而且方法和Collection一致,set集合取出元素的方式只有一种:迭代器。

          1、HashSet:基于HashMap实现,哈希表结构,不同步,保证元素的唯一性依赖于hashCode(),equals()方法。

               Hash概述:哈希算法hash也称散列,结果叫哈希值。数组中存储的都是(元素与哈希值的)对应关系,该数组称为哈希表,查询速度比数组快,重复元素存不进去,保证元素的唯一性。

               哈希冲突怎么解决?元素的哈希值(hashcode())一致了,这是会再次判断元素的内容是否相同(equals()),如果equlas返回true,意味着两个元素相同,如果返回的是false,意味着两个元素不相同,继续通过算法算出位置进行存储(拉链法)。

          2、TreeSet:基于TreeMap实现,实现了SortedSet接口,是有序的,添加到TreeSet中的元素要实现Comparable接口,以便使用元素的自然排序对元素进行排序,或者根据创建set时提供的Comparator进行排序。

      

      Map

        |--Hashtable:数据结构为哈希表,同步的,不允许null作为键和值,被hashmap所替代

           |--Properties:属性集,键和值都是字符串,可结合流进行键值的操作

        |--HashMap:数据结构为哈希表,不同步,允许null作为键和值,无序的

        |--TreeMap:数据结构是二叉树,不同步,可对map集合中给的键进行排序

      

      Iterator:是遍历集合的迭代器(不能遍历Map,只能遍历Collection),Collection的实现类都实现了iterator()函数,它返回一个Iterator对象,用来遍历集合,ListIterator则专门用来遍历List。

    Arrays和Collections

      Collections:集合框架中用于操作集合对象的工具类,都是静态方法。

      1、获取Collection最值

      2、对List集合排序,也可以二分查找

      3、对排序逆序

      4、可以将非同步的集合转成同步的集合

      Arrays:用于操作数组的工具类,类中定义的都是静态工具方法。

      1、对数组排序

      2、二分查找

      3、数组复制

      4、将两个数组进行元素的比较,判断两个数组是否相同

      5、将数组转成字符串

      6、将数组转成list集合(asList方法),为了使用集合的方法操作数组中的元素

    注:

      集合中存储的都是对象的地址(引用)

      存储的时候自动提升为Object类型,取出的时候如果需要使用元素的特有内容,必须进行向下转型

      数组长度是固定的,在转成集合后,长度也是固定的,所以不要使用集合的增删功能;如果数组中存储的是基本数据类型,那么转成集合后,数组对象作为集合中的元素存在;如果数组中元素是引用数据类型时,转成集合后,数组元素作为集合元素存在。

  • 相关阅读:
    中国首个 SaaS 模式的云告警平台安卓版 APP 上线
    Cloud Insight 和 BearyChat 第一次合体,好紧张!
    安卓 DevOps:从一次推送命令到生产
    Jmeter 使用笔记之 html 报告扩展(一)
    10大常见的安全漏洞!你知道吗?
    iOS 并发:NSOperation 与调度队列入门(1)
    欺诈网站都注重用户体验!你,还在等什么?!
    你知道在深圳一个月花多少钱吗?
    找不到编译器:wepy-compiler-less
    wepy项目的学习
  • 原文地址:https://www.cnblogs.com/chappell/p/9025816.html
Copyright © 2011-2022 走看看