一List
1.常见的数据结构
1. 数组(ArrayList)
2. 链表(LinkedList)
3. 堆栈 特点FILO(先进后出)
4. 队列(先进先出)
1.集合框架的体系
1.继承体系:Collection(所有集合类接口的超级接口)
|--List:特点 有序(添加的顺序)可以重复的数据
|--ArrayList :查询和修改效率高,但是删除和插入效率低。(线程不安全)
|--LinkedList :插入和删除效率高 (线程不安全)
|--Vector : 线程安全
2.如何选择:到底怎么使用如何选择:
1.有序(添加的顺序)可以重复的数据
2.如果查询和修改的频率高-ArrayList
3.如果插入删除频率高-LinkedList
4.如果要求线程安全 Vector
3.ArrayList
1.可以 多查API
2. 基本数据的维护,常用的CRUD方法
3. 集合的遍历
①for
②增强for循环
③迭代器
1) 单向迭代器:Iterable 接口有接口方法
返回一个Iterator
Iterator
hasNext() 是否有下一个(不会移动指针)
next() 返回下一个元素(要移动指针)
remove() 删除下一个元素
注意:如果尚未调用 next 方法,或者在上一次调用 next 方法之后已经调用 remove 方法
ConcurrentModificationException:不能在迭代过程中对数据源进行改 变
2) 双向迭代器:listIterator
是List下面的方法
所有的list的实现类都可以获取 这个对象
4.LinkedList
1. 多查询API
2. 基于数据结构的不同,他提供了很多操作头 和尾的方法
二Set
1.使用的大环境
无序(添加的顺序)不可以重复
2.HashSet
1. 判断重复的方式
(1) 通过添加进去的元素的hashCode+eqauls 两者进行比较
(2) 如果两个对象的hashCode相等 ,并且 两个对象调用equals结果是true才认为两个元素重复
2. 语法特点
不重复,无序(不保证和添加顺序一致)
3.TreeSet
1. 语法特点
(1) 无序:不保证(不记录)我们的添加顺序;但是可以保证添加里面元素是有序的。
2. Comparator 用于自定义比较器
3. Comparable 自然排序
4. 判断重复的标准
(1)如果采用的是自然排序调用对象的compareTo方法,如果返回0 表示相等;
(2)如果使用的定制排序(比较器),调用比较器的方法compare 返回0 表示相等;
三Map
1.Map
1. 什么是Map
接口 Map:将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映 射到一个值。
2. Map介绍
Map :将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到 一个值。
3. put方法
put(K key, V value) 在此映射中关联指定值与指定键。
put方法特点:
如果key不存在,直接添加进去
如果key相同,value值使用最新的值替换key对应的老值.
put方法会返回 对应key对应的老值
2.Map方法和存储结构
1. Map方法介绍
boolean containsKey(Object key) 如果此映射包含对于指定键的映射关系, 则返回 true。
boolean containsValue(Object value) 如果此映射将一个或多个键映射到指 定值,则返回 true。
get(Object key) 返回指定键所映射的值
2. Map特点
一个Map对象中不能有重复的键
3. Map存储方式
利用封装的,如果要封装,首先有个类型,这个类型是Entry,
Entry类型作用:Entry用来封装用户添加的一对数据.Entry类型有两个字段,添 加的时候,使用Entry把两个值封装成一个对象,然后放到Map容器里面。对于Map 而言,看到的只有Entry对象。
由于Entry的存在,只是对于Map来讲才有意义. 因此它使用封装,把Entry 类型设计到Map里面。相当于内部类。
3.Map的遍历方式
1. KeySet
①先得到所有key, 通过keySet方法取到;
②然后遍历keySet,依次通过key来查找value。
通过Object get(Object key)方法;
2. Entry对象方式
①先得到所有的Entry对象,Entry对象就包装了key,values;
②遍历Entry对象的集合,然后依次从Entry对象中调用方法:getKey(), getValue()
4.Collections工具类
1.多查询API
5.Properties读写文件
1. Properties特点
Properties中每个键及其对应处理的值都应该是一个字符串
String getProperties(String key)---》相当于Map的get方法,
SetProperties (String key,String value)---》相当于put方法
6.泛型
1. 多使用API
2. 泛型的上下限
? 号 :表示通配符,不确定的类型,可以表示任意类型【? extends Object】 ;
? extends Number :表示通配符?的上限 ,必须是Number及Number的子类
? Super Number: 表示通配符 ?的下限,必须是Number及Number的父类