1:对象数组
数组既可以存储基本数据类型,也可以存储引用类型.
2:集合
(1)集合和数组的区别?
1,长度区别:[size=14.0740737915039px]数组固定,[size=14.0740737915039px]集合可变
2,内容区别:[size=14.0740737915039px]数组可以是基本类型,也可以是引用类型.[size=14.0740737915039px]集合只能是引用类型
3,元素内容:[size=14.0740737915039px]数组只能存储同一种类型,[size=14.0740737915039px]集合可以存储不同类型(其实集合一般存储的也是同一种类型
(2)集合的继承体系结构:
Collection
|--List
|--ArrayList
|--Vector
|--LinkedList
|--Set
|--HashSet
|--TreeSet
(3)Collection的常用方法:
[size=14.0740737915039px] 添加功能,[size=14.0740737915039px]删除功能,[size=14.0740737915039px]判断功能,[size=14.0740737915039px]获取功能,[size=14.0740737915039px]长度功能.
(4)Collection集合的遍历
迭代器(使用while和for都可以,但是老外都用for迭代)
(5)集合的使用步骤:1创建集合对象.2[size=14.0740737915039px]创建元素对象;3,[size=14.0740737915039px]把元素添加到集合;4,[size=14.0740737915039px]遍历集合
3,List集合:
(1)List是Collection的子接口特点是有序可重复。
(2)List的方法:[size=14.0740737915039px]添加功能,[size=14.0740737915039px]删除功能,[size=14.0740737915039px]获取功能,[size=14.0740737915039px]迭代器功能,[size=14.0740737915039px]修改功能.
(3)List集合的特有遍历功能:使用size()和get()
(4)列表迭代器的特有功能:
可以逆向遍历,但是要先正向遍历,所以无意义,基本不使用。
(5)并发修改异常
1:出现的现象
迭代器遍历集合,集合修改集合元素
2:原因
迭代器是依赖于集合的,而集合的改变迭代器并不知道。
3:解决方案
1:迭代器遍历,迭代器修改(ListIterator)
2:集合遍历,集合修改(size()和get())
(6)List的子类特
ArrayList
底层数据结构是数组,查询快,增删慢。
线程不安全,效率高。
Vector
底层数据结构是数组,查询快,增删慢。
线程安全,效率低。
LinkedList
底层数据结构是链表,查询慢,增删快。
线程不安全,效率高.
(7)ArrayList和LinkedList集合的使用选择:
查询多:ArrayList
增删多:LinkedList
不知道?就用ArrayList。
4,Set集合:
(1)Set集合的特点:[size=14.0740737915039px]无序,唯一
(2)HashSet集合
1:底层数据结构是哈希表(是一个元素为链表的数组)
2:哈希表依赖的两个方法:hashCode()和equals()他们[size=14.0740737915039px]保证元素唯一性
首先比较哈希值是否相同,相同就继续执行equals()方,[size=14.0740737915039px]不同就就直接把元素添加到集合
(3)TreeSet集合
A:底层数据结构是二叉树
B:保证元素的排序方式:[size=14.0740737915039px]自然排序:[size=14.0740737915039px]让元素所属的类实现Comparable接口.比较器排序:[size=14.0740737915039px]让集合构造方法接收Comparator的实现类对象
3:Collection集合:
Collection
|--List 有序,可重复
|--ArrayList
底层数据结构是数组,查询快,增删慢。
线程不安全,效率高
|--Vector
底层数据结构是数组,查询快,增删慢。
线程安全,效率低
|--LinkedList
底层数据结构是链表,查询慢,增删快。
线程不安全,效率高
|--Set 无序,唯一
|--HashSet
底层数据结构是哈希表。
依赖两个方法:hashCode()和equals()
|--LinkedHashSet
底层数据结构是链表和哈希表
由链表保证元素有序
由哈希表保证元素唯一
|--TreeSet
底层数据结构是二叉树
自然排序
比较器排序
5:在集合数据结构:
ArrayXxx:底层数据结构是数组,查询快,增删慢
LinkedXxx:底层数据结构是链表,查询慢,增删快
HashXxx:底层数据结构是哈希表。依赖方法:hashCode()和equals()
TreeXxx:底层数据结构是二叉树。两种排序:自然排序和比较器排序
1:Map集合:
(1)将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。
(2)Map和Collection的区别?
首先Map 存储的是键值对形式的元素,键唯一,值可以重
其次Collection 存储的是单独出现的元素,Set元素唯一,List元素可重
(3)Map接口方法:[size=14.0740737915039px]添加功能,[size=14.0740737915039px]删除功能,[size=14.0740737915039px]判断功能,[size=14.0740737915039px]获取功能,[size=14.0740737915039px]长度功能
(4)Map集合的遍历:
1:键值方法:
a:获取所有键的集合
b:遍历键的集合,得到每一个键
c:根据键到集合中去找值
2:键值对方法:
1:获取所有的键值对对象的集合
2:遍历键值对对象的集合,获取每一个键值对对象
3:根据键值对对象去获取键和值
2:Collections
(1)是针对集合进行操作的工具类
(2Collection和Collections的区别:
A:Collection 是单列集合的顶层接口,有两个子接口List和Set
B:Collections 是针对集合进行操作的工具类,可以对集合进行排序和查找等
(3)常见的方法:
1:public static <T> void sort(List<T> list)
2:public static <T> int binarySearch(List<?> list,T key)
3:public static <T> T max(Collection<?> coll)
4:public static void reverse(List<?> list)
5:public static void shuffle(List<?> list)
|
|