List与Set、map的区别。 List: 1.可以允许重复的对象。 2.可以插入多个null元素。 3.是一个有序容器,保持了每个元素的插入顺序,输出的顺序就是插入的顺序。 4.常用的实现类有 ArrayList、LinkedList 和 Vector。ArrayList 最为流行,它提供了使用 ...
分类:
编程语言 时间:
2018-08-30 10:57:24
阅读次数:
189
一、问题描述 给定一个链表的数据结构和链表的头结点,和正整数N,要求删除倒数第N个结点 二、思路 删除链表的一个结点,如果你只有当前结点,可以将下一个结点的值赋值到当前结点,然后删除下一个结点就可以。 如果你能找到需要删除结点的上一个结点,那么你可以直接操作上一个结点的指针指向下下一个结点就可以 利 ...
分类:
其他好文 时间:
2018-08-11 19:41:00
阅读次数:
126
list 容器实现了双向链表的数据结构,数据元素是通过链表指针串连成逻辑意义上的线 性表,这样,对链表的任一位置的元素进行插入、删除和查找都是极快速的。 图 2-7 是 list 采用的双向循环链表的结构示意图。 由于 list 对象的节点并不要求在一段连续的内存中,所以,对于迭代器,只能通过“++ ...
分类:
其他好文 时间:
2018-07-05 10:19:52
阅读次数:
156
基于jdk1.8 hashMap实现,要求容量大小是2的整次方,例如:2/4/8/16/32/64/128...,而不能是中间的某个值。这是为什么呢? map是数组+链表的数据结构,读写数据都需要首先获取数组中的下标值,获取的方式是通过hashcode取余。取余so easy,我们都会,假定运算后的 ...
分类:
其他好文 时间:
2018-07-01 01:06:55
阅读次数:
750
链表的特点:查找效率较慢,插入和删除的效率较快 链表的数据结构: 将链表反转输出最直接的方法就是改变链表的结点指向: pre/cur/temp作为改变链表指向的三个指针,然后再遍历链表的过程中去改变结点的指向; 代码如下: 第二种方法可以用栈结构加循环来输出反转链表: 创建栈结构来保存结点,然后根据 ...
分类:
其他好文 时间:
2018-06-24 21:04:33
阅读次数:
125
在jdk1.8中主要做了2方面的改进 改进一:取消segments字段,直接采用transient volatile HashEntry<K,V>[] table保存数据,采用table数组元素作为锁,从而实现了对每一行数据进行加锁,进一步减少并发冲突的概率。 改进二:将原先table数组+单向链表 ...
分类:
其他好文 时间:
2018-03-22 22:37:26
阅读次数:
164
队列、链表之类的数据结构及其常用。Java中,ArrayList和Vector都是使用数组作为其内部实现。两者最大的不同在于:Vector是线程安全的,而ArrayList不是。此外LinkedList使用链表的数据结构实现了List,但并不是线程安全的,就像之前包装HashMap,这里我们可以使用 ...
分类:
其他好文 时间:
2018-02-24 18:01:47
阅读次数:
173
1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。 2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。 3.对于新增和删除操作add和remove,LinedList比较占优势,因为Arra ...
分类:
其他好文 时间:
2018-01-24 00:38:27
阅读次数:
197
接上篇《android开发艺术探索》读书笔记(九)--四大组件 No1: 消息队列MessageQueue的内部存储结构并不是真正的队列,而是采用单链表的数据结构来存储消息列表,因为单链表在插入和删除上比较有优势 No2: ThreadLocal可以在不同的线程中互不干扰地存储并提供数据,通过Thr ...
分类:
移动开发 时间:
2018-01-22 13:01:40
阅读次数:
189
1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。 2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。 3.对于新增和删除操作add和remove,LinedList比较占优势,因为Arra ...
分类:
其他好文 时间:
2018-01-11 22:25:44
阅读次数:
195