JavaSE 高级总结

文章目录

集合

概述

用来存数据的容器
长度可变>取代数组的原因
只能存对象
集合只能临时存储数据不能永久存储

单列集合 Collection
双列集合Map

单列集合体系结构

JavaSE 高级总结

单列集合

Collection

创建Collection<E>集合对象
	Collection<E> 集合名 = new 具体的实现类对象<E>();
	例如 :
		Collection<E> 集合名 = new ArrayList<E>();
		Collection<E> 集合名 = new HashSet<E>();

		*boolean add(E e)  : 添加元素,返回添加是否成功
删 : 
	*boolean remove(Object o)  : 删除集合中指定元素,返回删除是否成功 -> 按元素值来删
	void clear() : 清空集合中所有的元素
改 : Collection因为没有索引所以没有set方法
查 : Collection因为没有索引所以没有get方法
	 boolean contains(Object o) : 查询传入元素是否包含于集合中
	 boolean isEmpty()  : 查询集合是否为空集合
	* int size() : 查询集合中的元素个数/查询集合的长度

遍历方式:
1. 转数组
Object[] toArray()
2. 迭代器 -> 面向对象的遍历方式
Iterator iterator()
3. 增强for循环 (能用迭代器遍历的一定能用增强for)

迭代器 Iterator

	boolean hasNext(): 查看容器中是否有下一个元素,如果有返回true
E next() : 拿到容器中的下一个元素

迭代器的使用步骤:
1. 获取迭代器对象 :
	 Iterator<E> it = 单列集合对象.iterator();
2. 循环操作 : 判断集合中是否有下一个元素
3. 如果有,拿到集合的这个元素; 以此往复,直到集合元素全部获取完毕

ConcurrentModificationException:并发修改异常
    此异常只在迭代器中发生,触发的条件: 当使用迭代器对象遍历集合的时候,使用集合对象对原集合进行增删改操作都会出这个异常
    解决方案:
        1. 不修改
        2. 使用列表迭代器(ListIterator)对象进行修改	
        
    触发时机 : 只要创建了迭代器对象,就不可以使用集合对象修改集合中的元素的内容!!  

增强for循环

格式:
// : 后面 -> 要遍历的容器
// : 前面 -> 接收容器数据的变量
for(容器元素类型 变量名:集合对象/数组对象){
//对变量名进行操作 -> 变量接收的就是容器中的元素
}

底层: 增强for循环的底层是一个看不见的迭代器在操作

增强for只用来遍历集合/数组,不在在增强for循环中修改集合内容!!(不要再增强for中写复杂代码)

包装类

byte		Byte
short		Short
int			Integer
long		Long
float		Float
double		Double
char		Character
boolean		Boolean

包装类型有特性:
自动装箱 : 基本数据类型->引用数据类型
Integer i = 100;//Integer i = Integer.valueOf(100);
自动拆箱 : 引用数据类型->基本数据类型
int num = i;//int num = i.intValue();

List接口

List<E>接口 : 存取有序 , 元素有索引 , 元素能重复

创建List<E>集合对象
List<E>集合名 = new 具体的实现类对象<E>();
	例如 :
		List<E> 集合名 = new ArrayList<E>();
		List<E> 集合名 = new HashSet<E>();  错误
                
增删改查: //List接口中新增关于索引操作的方法
增 :
	*boolean add(E e)  : 依次添加元素,永远返回true
	*void add(int index, E element) : 插入-> 在指定索引位置插入元素

删 : 
	*boolean remove(Object o)  : 删除集合中指定元素,返回删除是否成功 -> 按元素值来删
	void clear() : 清空集合中所有的元素
	*E remove(int index) : 按照 索引删除指定索引位置的元素,并返回被删除的元素
改 : 
	E set(int index,E newElement): 修改指定索引位置的元素并返回被修改的元素
查 : 
	* E get(int index) : 获取指定索引位置的元素
	 boolean contains(Object o) : 查询传入元素是否包含于集合中
	 boolean isEmpty()  : 查询集合是否为空集合
	* int size() : 查询集合中的元素个数/查询集合的长度
	int indexOf(Object o) : 获取传入的元素o第一次出现在集合的索引位置
	int lastIndexOf(Object o) : 获取传入的元素o最后一次出现在集合的索引位置		
	
遍历方式:
1. 转数组
	Object[] toArray()  
2. 迭代器   -> 面向对象的遍历方式 
	Iterator<E> iterator() 
3. 增强for循环 (能用迭代器遍历的一定能用增强for)    
4. 普通for循环 for循环 和 get(int index) 和 size()
5. 列表迭代器 ListIterator    
		ListIterator<E> listIterator()  
上一篇:百度地图API : 修改marker图标(icon)


下一篇:JavaSE之IO流