JAVA数据结构学习
来源:互联网 发布:个体工商户开淘宝 编辑:程序博客网 时间:2024/05/16 19:44
主要有三种接口 map list set。
尽量返回接口而非实际类型。这样如果要将返回的ArrayList改为LinkedList,客户端代码不用改变。
常用集合类的继承结构如下:
Collection<--List<--Vector
Collection<--List<--ArrayList
Collection<--List<--LinkedList
Collection<--Set<--HashSet
Collection<--Set<--HashSet<--LinkedHashSet
Collection<--Set<--SortedSet<--TreeSet
Map<--SortedMap<--TreeMap
Map<--HashMap
其中 Collection,List,Set,Map都是接口。
Vector和ArrayList类似数组。LinkedList类似链表。
Set是集合,不能有重复元素。
Map就是key-value。
ArrayList 和Vector 区别:
ArrayList是最常用的List实现类,内部是通过数组实现的,它允许对元素进行快速随机访问。数组的缺点是每个元素之间不能有间隔,当数组大小不满足时需要增加存储能力,就要讲已经有数组的数据复制到新的存储空间中。当从ArrayList的中间位置插入或者删除元素时,需要对数组进行复制、移动、代价比较高。因此,它适合随机查找和遍历,不适合插入和删除。
Vector与ArrayList一样,也是通过数组实现的,不同的是它支持线程的同步,即某一时刻只有一个线程能够写Vector,避免多线程同时写而引起的不一致性,但实现同步需要很高的花费,因此,访问它比访问ArrayList慢。
LinkedList是用链表结构存储数据的,很适合数据的动态插入和删除,随机访问和遍历速度比较慢。另外,他还提供了List接口中没有定义的方法,专门用于操作表头和表尾元素,可以当作堆栈、队列和双向队列使用。
HashSet和TreeSet选择:
Set既可作为一个ArraySet 实现,亦可作为HashSet 实现。ArraySet 是由一个ArrayList
后推得到的,设计成只支持少量元素,特别适合要求创建和删除大量Set 对象的场合使用。然而,一旦需要
在自己的Set中容纳大量元素,ArraySet 的性能就会大打折扣。写一个需要 Set的程序时,应默认选择
HashSet。而且只有在某些特殊情况下(对性能的提升有迫切的需求),才应切换到 ArraySet。
Map的选择:
当我们使用 Map时,首要的选择应该是 HashMap。只有在极少数情况下才
需要考虑其他方法。
- Java数据结构 学习笔记
- java 数据结构学习
- Java数据结构学习
- 数据结构java学习笔记
- JAVA学习笔记 -- 数据结构
- JAVA学习笔记 -- 数据结构
- JAVA数据结构学习
- JAVA学习数据结构
- 【学习中】java数据结构
- Java数据结构学习笔记
- java数据结构----数据结构之学习的点滴
- 用java学习数据结构--单链表
- java数据结构学习(一)
- java数据结构表的学习
- Java语言学习-数据结构接口
- Java数据结构学习1--List
- java学习[2]_数据结构
- java 数据结构 学习笔记1
- 黑马程序员——C语言中的一些小问题
- 64位Ubuntu下运行某程序时碰到找不到动态库的问题
- 获取显示窗口警告 android The method getWidth() from the type Display is deprecated
- 每个程序员都应读的书
- [Windows]_[删除非空目录的注意要点]
- JAVA数据结构学习
- 泻我厝刭持蔽猿和甘映卜细
- 盐猜韭杉徽欧蕴俨瞪荒绿巢
- Implement strStr() leetcode
- JavaSe基础XX23——HTML
- C# DataGridView连接数据库,通过textBox更新数据库(解决绑定数据库后无法增加新行)
- Cocos2d-x3.1TestCpp之NewRenderTest Demo分析
- Openstack百科——计算资源池
- 绽娇幕截窘茸迸炎次苫凭盗