zoukankan      html  css  js  c++  java
  • 【Java集合的详细研究7】Set和List 的关系与区别

    两个接口都是继承自Collection. 

    List (inteface) 

    次序是List 的最重要特点,它确保维护元素特定的顺序. 
    --ArrayList 允许对元素快速随机访问. 
    --LinkedList 对顺序访问进行优化,向List 中间插入与移除的开销并不大,具有addFrist(),addLast(),getFirst,getLast,removeFirst和removeLast().这些方法使得LinkedList可当作堆栈/队列/双向队列. 


    Set (inteface) 

    存入Set 的每个元素必须唯一,不保证维护元素的次序.加入Set 的Object必须定义equals()方法 
    --HashSet 为快速查找而设计的Set ,存入HashSet对象必须定义hashCode(). 
    --TreeSet  保护次序的Set ,使用它可以从Set 中提取有序序列. 
    --LinkedHashSet  具有HashSet的查询速度,且内部使用链表维护元素的次序. 
    它们之间的存储方式不一样: 
    TreeSet采用红黑树的树据结构排序元素. 
    HashSet采用散列函数,这是专门为快速查询而设计的. 
    LinkedHashSet内部使用散列以加快查询速度,同时使用链表维护元素的次序. 

    使用HashSet/TreeSet时,必须为类定义equals();而HashCode()是针对HashSet,作为一种编程风格,当覆盖equals()的时候,就应该同时覆盖hashCode().

  • 相关阅读:
    Django基础之cookie
    Django基础之redirect()
    Django基础之render()
    Django基础之JsonResponse对象
    Django基础之response对象
    scrapy框架自定制命令
    数据分析案例-拉勾网招聘信息
    爬虫之单线程多任务异步抓取
    数据分析之matplotlib使用
    数据分析之numpy使用
  • 原文地址:https://www.cnblogs.com/guweiwei/p/6516157.html
Copyright © 2011-2022 走看看