【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().
【Java集合的详细研究7】Set和List 的关系与区别的更多相关文章
- 【Java集合的详细研究8】List,Set,Map用法以及区别
Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素.一些Collection允许相同的元素而另一些不行.一些能排序而另一些不行.Java ...
- 【Java集合的详细研究1】Collections类常用方法总结
1.sort(Collection)方法的使用(含义:对集合进行排序). 例:对已知集合c进行排序? public class Practice { public static void main(S ...
- 【Java集合的详细研究9】Java堆栈(stack)的使用方法
栈是一种常用的数据结构,栈只允许访问栈顶的元素,栈就像一个杯子,每次都只能取杯子顶上的东西,而对于栈就只能每次访问它的栈顶元素,从而可以达到保护栈顶元素以下的其他元素.”先进后出”或”后进先出”就是栈 ...
- 【Java集合的详细研究6】Java 数组
Java 语言中提供的数组是用来存储固定大小的同类型元素. 声明数组变量 double[] myList; // 首选的方法 或 double myList[]; // 效果相同,但不是首选方法 创建 ...
- 【Java集合的详细研究5】Java中Array与ArrayList的主要区别
1)精辟阐述:可以将 ArrayList想象成一种“会自动扩增容量的Array”. 2)Array([]):最高效:但是其容量固定且无法动态改变: ArrayList: 容量可动态增长:但牺 ...
- 【Java集合的详细研究2】浅谈Arrays.asList的使用
首先,该方法是将数组转化为list.有以下几点需要注意: (1)该方法不适用于基本数据类型(byte,short,int,long,float,double,boolean) (2)该方法将数组与列表 ...
- 【Java集合的详细研究4】Java中如何遍历Map对象的4种方法
方法一 通过Map.entrySet遍历key和value,在for-each循环中使用entries来遍历.推荐,尤其是容量大时 这是最常见的并且在大多数情况下也是最可取的遍历方式.在键值都需要时使 ...
- 【Java集合的详细研究3】Arrays类常用方法
1.void sort(array)对数组array的元素进行升序排序 2.int binarySearch(array,val):查询元素值val在数组array中的下标 3.String toSt ...
- Java集合体系结构(List、Set、Collection、Map的区别和联系)
Java集合体系结构(List.Set.Collection.Map的区别和联系) 1.Collection 接口存储一组不唯一,无序的对象 2.List 接口存储一组不唯一,有序(插入顺序)的对象 ...
随机推荐
- Java的spi介绍和简单应用
1.什么是java的spi SPI 全称为 (Service Provider Interface) ,是JDK内置的一种服务提供发现机制. 目前有不少框架用它来做服务的扩展发现, 简单来说,它就是一 ...
- android http post
public static boolean postInfo(String info1, String info2, String info3, ....) { final HttpParams ht ...
- jQuery 隐藏与显示 input 默认值
分享下jQuery如何隐藏和显示 input 默认值的例子. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN ...
- 【Android】3.5 示例5--多地图展示
分类:C#.Android.VS2015.百度地图应用: 创建日期:2016-02-04 3.5 示例5--多地图展示 一.简介 地图控件自v2.3.5版本起,支持多实例,即开发者可以在一个页面中建立 ...
- 在java代码中用xslt处理xml文件
java处理xml文件 import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundExceptio ...
- 每日英语:Cyclists Live Six Years Longer
Cycling does the body good. New data from Tour de France cyclists finds that those athletes live an ...
- hdoj1257 最少拦截系统
最少拦截系统 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
- Markdown 11种基本语法【转】
[转自:http://www.cnblogs.com/hnrainll/p/3514637.html] 1. 标题设置(让字体变大,和word的标题意思一样)在Markdown当中设置标题,有两种方式 ...
- C++使用ocilib访问oracle数据库
引用: http://blog.csdn.net/u011311985/article/details/51221898 测试程序我放到 http://download.csdn.NET/detail ...
- JS地毯式学习一
1.<noscript> 现代浏览器都对JavaScript进行了支持,一般是在用户的浏览器禁用了脚本的情况下才会显示<noscript>的内容. 包含在<noscrip ...