List:数据是有顺序(添加的先后顺序)的,数据是可以重复的
ArrayList:内部结构是数组,比较适合做高频率的查找、遍历
LinkedList:双向链表,比较适合做高频率的新增和删除
继承和实现叫功能的扩展(子类独有的方法)
面试题
Collection和map接口的区别
Collection是存储单值的最大父接口
Map是存储对值的最大父接口
ArrayList和LinkedList的区别
ArrayList和Vector的区别
Vector几乎和ArrayList一模一样
ArrayList是线程异步,线程不安全
Vector是线程同步,线程安全
Collection接口下的两个子接口:
List:有顺序,元素可以重复,顺序指的是添加的先后顺序
Set:无序,元素不可以重复,顺序指的是添加的先后顺序
List和Set的区别
Set其实是有顺序的,内部有一个专门排序的算法
- 无序不等于随机
- 所谓的无序指的是没有按照添加的先后顺序,其实内部是做了排序的
引用数据类型
set集合所谓的不能重复,默认情况下是比较地址
Set集合如何确保数据的不重复?
保证数据类型的类要重写hashCode和equals方法。
TreeSet(可以排序的Set集合)
排序规则:要排序的对象的类必须实
现Comparable接口(泛型接口)
CompareTo方法:
返回值是int类型,代表排序结果
负数-1:代表比较的两个值
0:代表两个值相等
正数1:代表变焦的两个值调用者大
LinkedHashSet:在添加数据的同时维护数据的
HashSet和LinkedHashSet的区别和联系?
比较接口:
Comparable接口:自然排序,排序规则是固定的。
Comparator接口:临时排序
实例
Map接口(泛型接口)
- 存储对值 K -V
- key不能重复,value可以重复
- 没有顺序(添加的先后顺序)
HashMap内部存储结构:
Jdk1.7之前:链表 + 二叉树
Jdk1.7及之后链表 + 数组 + 红黑树
HashMap基本上面试90%会问原理。
Hashtable和HashMap区别:
- HashMap是线程同步,线程不安全的。Hashtable是线程异步,线程安全的
- HashMap的key是可以为null的。Hashtable的key是不可以为null的
Properties:属性
Properties是Hashtable的子类,更多的是用来操作属性文件。
List集合的遍历
1.for循环
2.foreach语句 增强for循环
3.迭代器 Iterator
Set集合的遍历
1.增强for循环
2.迭代器
Map集合的遍历
1.for循环
2.增强for循环
3.增强for循环(Entry)
4.迭代器