初识java集合——链表

* 链表中的每个节点,存放着上一个节点的引用和下一个节点的引用
* 相对于泛型集合,链表是一个有序集合,每个对象的位置十分的重要
* 链表的add默认也是添加到尾部的
*
* 链表的添加删除操作往往借助迭代器来完成,参见IteratorIntro
*
* 对于链表的遍历,绝对不要使用(代码区-1)的方式,例如get(3),要从头开
* 始到3的索引,get(7),又得从头开始到7的位置,效率非常的低。
* 因为LinkedList对象不做任何缓存位置信息操作
*

//代码区-1
for( int i =0; i < link.size(); i++){
	//do something with link.get(i);
}

  

* 链表可以使用set和get方法,当链表内元素很少时,可以不必为set和get的开销而烦恼,但此时完全可以使用
* ArrayList来实现我们期望的功能
* 使用链表的唯一理由是尽可能减少在列表中间插入或者删除所付出的代价
*
* 链表中removeFirst和removeLast 删除并返回表头部或尾部的元素

时间: 2024-10-07 00:53:21

初识java集合——链表的相关文章

初识Java集合框架(Iterator、Collection、Map)

1. Java集合框架提供了一套性能优良.使用方便的接口和类,它们位于java.util包中 注意: 既有接口也有类,图中画实线的是类,画虚线的是接口 使用之前须要到导入java.util包 List和Set是Collection的子接口,ArrayList和LinkedList是List的两个实现类,HashSet和TreeSet是Set的两个实现类 重点:ArrayList.LinkedList和HashSet Map接口对应的集合是以K-V键值对的方式存储数据的,不同于Collection

初识java集合——映射表(Map)

*映射表 * java类库为映射表提供了两个通用的实现 HashMap和TreeMap * HashMap对键进行散列,TreeMap用键的整体顺序对元素进行排序,构建成搜索树 * * 与Set相似,HashMap的速度要比TreeMap要快一点,同时不需要按照排列访问,也应该选择HashMap * 注意,键的值必须是唯一的,如果第二次put了一个同样的键值进去,第二次的值会取代第一次的值,put会 * 返回用这个键参数存储的上一个值 * * 我们可以获取Map的视图,这是一组实现了Collec

初识java集合——迭代器

* Collection接口中有2个基本的方法 * add和iterator * * add(E e)是用于向集合中添加元素,如果添加元素成功,则返回true, 反之为false(例如向集里面添加,因为集是不允许重复的) * * Iterable接口只包含了一个方法 * Iterator<E> iterator(); * 编译器将foreach循环翻译为带有迭代器的循环 * foreach可以与任何实现了Iterable接口的对象一起工作 * Collection接口扩展了Iterable接口

初识java集合——树集

*TreeSet与HashSet相比,树集是有序集合,对树集遍历,每个值将自动按照排序顺序呈现. * TreeSet当前使用的是红黑树,每次将一个元素添加到树中时,都将被放置正确的位置之中 * * 在TreeSet中添加元素的速度要快于数组和链表,但慢于散列表(HashSet) * * TreeSet在默认情况下,假定插入的元素实现了Comparable接口,该接口值返回负数,表明a位于b之前 * * public interface Comparable<T> * { * int compa

初识java集合——散列表(HashTable)

[散列表]为每个对象计算一个整数,称为散列码(是由对象的实例域产生的一个整数)更确切的说 * 不同实例域的对象产生不同的散列码 * * 如果自定义类,就要负责实现这个类的hashcode,注意:自己实现的hashcode方法应该与equals方法兼容 * 即如果a.equals(b) 为true a和b必须具有相同的散列码 * * 在java中,[散列表]用链表数组实现.每个列表被称为桶.想要查找表中对象,先计算散列码,然后与桶的总数取余 * 所的余数就是桶的索引.当桶中没有其他元素时,很幸运可

初识java集合——其他集合

* 弱散列映射表(WeakHashMap) * 如果有一个值,对应的键已经不再使用了,将会出现什么情况呢 * 假定对某个键的而最后一次引用已经消亡,不再有任何途径引用这个值对象了,但是由于程序中任何 * 部分没有再引用这个键,所以这个键/值无法从Map中删除. * 遗憾的是,垃圾回收器跟踪活动的对象,只要Map对象时活动的,其中的所有桶也都是活动的,它们不能被回收. * 当对键的唯一引用来自散列表条目时,这一数据结构将于垃圾回收器协同工作一起删除键/值对 * * 下面是对于[弱散列映射表]的机制

初识java集合——队列

有两个端头的队列,称为双端队列.可以让人们有效的在头部和尾部同时添加或删除元素 * 不支持在队列中间添加元素 * *[ 优先级队列] * 可以按照任意的顺序插入,却总是按照排序的顺序进行检索,无论何时调用remove,返回的是 * 当前优先队列中最小的元素,然而优先级队列并没有对所有元素进行排序 * 如果用迭代器的方式,处理这些元素,并不需要对他们进行排序 * * 优先级队列使用了堆(heap)这个优雅高效的数据结构,对树执行添加和删除操作时,最小的元素总能 * 移动到根节点 * * 与Tree

java集合框架小结(进阶版)之HashMap篇

基本概念: Hash(哈希):hash一般也译作“散列”.事实上,就是一个函数,用于直接定址.将数据元素的关键字key作为变量,通过哈希函数,计算生成该元素的存储地址. 冲突:函数是可以多对一的.即:多个自变量可以映射到同一函数值.一般而言,不同的key的hash值是不同的.在往hash表中映射的时候,不同的hash值可能映射到同一存储地址,这种情况被称为冲突. 解决冲突的方法: 1. 链表法:将冲突的各个元素用一个一维数组来维护.(java源码实现) 2. 开发寻址法:具体的有线性探测法.二次

Java—集合框架List

集合的概念 现实生活中:很多的事物凑在一起 数学中的集合:具有共同属性的事物的总和 Java中的集合类:是一种工具类,就像是容器,存储任意数量的具有共同属性的对象 集合的作用 在类的内部,对数据进行组织(针对作用与意义一样的属性,将他们放到一个集合中) 简单而快速的搜索大数量的条目 有的集合接口,提供了一系列排列有序的元素,并且可以在序列中快速的插入或删除有关元素 有的集合接口,提供了映射关系,可以通过关键字(key)去快速查找到对应的唯一对象,而这个关键字可以是任意类型 与数组相比 数组的长度