Day_13 常用类时间类迭代器

LocalDateTime/LocalDate/LocalTime
LocalDateTime/LocalDate/LocalTime : 年月日时分秒/年月日/时分秒

LocalDateTime/LocalDate/LocalTime 是JDK8新推出的时间操作类,最小的时间单位是 纳秒;

LocalDateTime/LocalDate/LocalTime 操作更像 Calendar 日历类; 解决了日历类中文化的差异问题;

LocalDateTime是一个不可变的日期时间对象,对时间进行修改记得接收结果!!
    
 
如何创建LocalDateTime对象: //去类中找静态方法且方法返回本类对象
	static LocalDateTime now() : 创建LocalDateTime对象时间指向现在!
    static LocalDateTime of(int year, int month, int dayOfMonth, int hour, int minute, int second)  : 创建LocalDateTime对象时间指向 指定时间!!    
DateTimeFormatter
SimpleDateFormat (日期格式化格式的类),但是在JDK8之前的时间类中需要SimpleDateFormat去调用format,parse方法完成Date时间的格式化和解析操作!! --> 不专注
	SimpleDateFormat:
		String format(Date date): 格式化
		Date parse(String strTime): 解析


//在JDK8时间类中,解析和格式化的功能方法回到了时间类
LocalDateTime对象  --> 字符串格式时间  (格式化)
   LocalDateTime类中:  
		String format(DateTimeFormatter formatter)  
字符串格式时间 --> LocalDateTime对象  (解析)   
  LocalDateTime类中:  
		static LocalDateTime parse(CharSequence text, DateTimeFormatter formatter)  
            CharSequence text: 需要解析的字符串
            
DateTimeFormatter : 此类的对象专注的提供日期格式    
	创建对象:
		static DateTimeFormatter ofPattern(String pattern) 
            	String pattern: 时间格式代码 yyyy,MM,dd HH,mm,ss
LocalDateTime中的until方法
long until(Temporal endExclusive, TemporalUnit unit)
            Temporal endExclusive: 传入的是截止时间的LocalDateTime对象
            	//Temporal是LocalDateTime的父接口
            TemporalUnit unit : 间隔时间的单位
            	//TemporalUnit 是 ChronoUnit的父接口
            	//ChronoUnit 是表示时间单位的枚举类
LocalDateTime的get系列方法(获取值)
int getYear()  :获取年信息
int getMonthValue() :获取月份信息(1-12)
int getDayOfMonth(): 获取天信息      
int getHour() :获取小时信息    
int getMinute():获取分钟信息
int getSecond(): 获取秒钟信息    
-------------------------------------------    
DayOfWeek getDayOfWeek():获取星期信息  
int getDayOfYear():获取年中天信息  
Month getMonth(): 获取月份信息(枚举对象返回)   
int getNano():获取纳秒信息     
LocalDateTime的plus系列方法(加)
plus系列方法是对日期字段进行做加法的操作!
LocalDateTime plusYears(long years) 
LocalDateTime plusMonths(long months)   
LocalDateTime plusDays(long days)  
LocalDateTime plusHours(long hours)  
LocalDateTime plusMinutes(long minutes)  
LocalDateTime plusSeconds(long seconds) 
-------------------------------------------------    
LocalDateTime plusNanos(long nanos)  
LocalDateTime plusWeeks(long weeks)  
    
注意:
	1. 记得接收, 因为时间修改是生成新的LocalDateTime对象,老的LocalDateTime对象不会改变
    2. 如果你传入的是正数就是做加法,如果你传入的是负数就是做减法    
LocalDateTime的minus系列方法(减)
minus系列方法是对日期字段进行做减法的操作!
LocalDateTime minusYears(long years) 
LocalDateTime minusMonths(long months)   
LocalDateTime minusDays(long days)  
LocalDateTime minusHours(long hours)  
LocalDateTime minusMinutes(long minutes)  
LocalDateTime minusSeconds(long seconds) 
-------------------------------------------------    
LocalDateTime minusNanos(long nanos)  
LocalDateTime minusWeeks(long weeks) 
    
注意:
	1. 记得接收, 因为时间修改是生成新的LocalDateTime对象,老的LocalDateTime对象不会改变
    2. 如果你传入的是正数就是做减法,如果你传入的是负数就是做加法       
LocalDateTime的with系列方法(设置值)
with系列方法是对日期字段进行设置值的操作!
LocalDateTime withYears(long years) 
LocalDateTime withMonths(long months)   
LocalDateTime withDays(long days)  
LocalDateTime withHours(long hours)  
LocalDateTime withMinutes(long minutes)  
LocalDateTime withSeconds(long seconds) 
-------------------------------------------------    
LocalDateTime withNanos(long nanos)  
LocalDateTime withWeeks(long weeks) 
    
注意:
	1. 记得接收, 因为时间修改是生成新的LocalDateTime对象,老的LocalDateTime对象不会改变
Period
Period : 时间间隔类 -> 表示年月日的时间间隔

获得对象的方法:
	static Period between(LocalDate startDateInclusive, LocalDate endDateExclusive) : 获取2个年月日时间对象的时间间隔对象
Duration
Duration : 时间间隔类 -> 表示时分秒的时间间隔

获得对象的方法:
	static Duration between(Temporal startInclusive, Temporal endExclusive)  
       	//Temporal接口 是 LocalDateTime/LocalDate/LocalTime的父接口
        虽然Temporal可以接收LocalDate,但是由于LocalDate只有年月日的时间信息,Duration获取不到时分秒的时间间隔,会有异常!!
        
成员方法:
	long toDays(): 获取Duration对象时间间隔的天数
	
集合的概述
集合 : 用来存储数据的容器;

集合的特点:
	1. 长度可变 -> 取代数组的原因(集合的底层是数组)
    2. 只能存对象 -> 集合中的数据类型只能是引用数据类型(JDK已经解决这个问题)
    3. 集合只能临时存储数据不能做永久存储
    
集合的分类:
	单列集合 Collection
	双列集合 Map
	
学习容器的方法:
	1. 如何创建容器
	2. 增删改查四类功能
	3. 遍历
单列集合的体系结构
LocalDateTime/LocalDate/LocalTime
LocalDateTime/LocalDate/LocalTime : 年月日时分秒/年月日/时分秒

LocalDateTime/LocalDate/LocalTime 是JDK8新推出的时间操作类,最小的时间单位是 纳秒;

LocalDateTime/LocalDate/LocalTime 操作更像 Calendar 日历类; 解决了日历类中文化的差异问题;

LocalDateTime是一个不可变的日期时间对象,对时间进行修改记得接收结果!!
    
 
如何创建LocalDateTime对象: //去类中找静态方法且方法返回本类对象
	static LocalDateTime now() : 创建LocalDateTime对象时间指向现在!
    static LocalDateTime of(int year, int month, int dayOfMonth, int hour, int minute, int second)  : 创建LocalDateTime对象时间指向 指定时间!!    
DateTimeFormatter
SimpleDateFormat (日期格式化格式的类),但是在JDK8之前的时间类中需要SimpleDateFormat去调用format,parse方法完成Date时间的格式化和解析操作!! --> 不专注
	SimpleDateFormat:
		String format(Date date): 格式化
		Date parse(String strTime): 解析


//在JDK8时间类中,解析和格式化的功能方法回到了时间类
LocalDateTime对象  --> 字符串格式时间  (格式化)
   LocalDateTime类中:  
		String format(DateTimeFormatter formatter)  
字符串格式时间 --> LocalDateTime对象  (解析)   
  LocalDateTime类中:  
		static LocalDateTime parse(CharSequence text, DateTimeFormatter formatter)  
            CharSequence text: 需要解析的字符串
            
DateTimeFormatter : 此类的对象专注的提供日期格式    
	创建对象:
		static DateTimeFormatter ofPattern(String pattern) 
            	String pattern: 时间格式代码 yyyy,MM,dd HH,mm,ss
LocalDateTime中的until方法
long until(Temporal endExclusive, TemporalUnit unit)
            Temporal endExclusive: 传入的是截止时间的LocalDateTime对象
            	//Temporal是LocalDateTime的父接口
            TemporalUnit unit : 间隔时间的单位
            	//TemporalUnit 是 ChronoUnit的父接口
            	//ChronoUnit 是表示时间单位的枚举类
LocalDateTime的get系列方法(获取值)
int getYear()  :获取年信息
int getMonthValue() :获取月份信息(1-12)
int getDayOfMonth(): 获取天信息      
int getHour() :获取小时信息    
int getMinute():获取分钟信息
int getSecond(): 获取秒钟信息    
-------------------------------------------    
DayOfWeek getDayOfWeek():获取星期信息  
int getDayOfYear():获取年中天信息  
Month getMonth(): 获取月份信息(枚举对象返回)   
int getNano():获取纳秒信息     
LocalDateTime的plus系列方法(加)
plus系列方法是对日期字段进行做加法的操作!
LocalDateTime plusYears(long years) 
LocalDateTime plusMonths(long months)   
LocalDateTime plusDays(long days)  
LocalDateTime plusHours(long hours)  
LocalDateTime plusMinutes(long minutes)  
LocalDateTime plusSeconds(long seconds) 
-------------------------------------------------    
LocalDateTime plusNanos(long nanos)  
LocalDateTime plusWeeks(long weeks)  
    
注意:
	1. 记得接收, 因为时间修改是生成新的LocalDateTime对象,老的LocalDateTime对象不会改变
    2. 如果你传入的是正数就是做加法,如果你传入的是负数就是做减法    
LocalDateTime的minus系列方法(减)
minus系列方法是对日期字段进行做减法的操作!
LocalDateTime minusYears(long years) 
LocalDateTime minusMonths(long months)   
LocalDateTime minusDays(long days)  
LocalDateTime minusHours(long hours)  
LocalDateTime minusMinutes(long minutes)  
LocalDateTime minusSeconds(long seconds) 
-------------------------------------------------    
LocalDateTime minusNanos(long nanos)  
LocalDateTime minusWeeks(long weeks) 
    
注意:
	1. 记得接收, 因为时间修改是生成新的LocalDateTime对象,老的LocalDateTime对象不会改变
    2. 如果你传入的是正数就是做减法,如果你传入的是负数就是做加法       
LocalDateTime的with系列方法(设置值)
with系列方法是对日期字段进行设置值的操作!
LocalDateTime withYears(long years) 
LocalDateTime withMonths(long months)   
LocalDateTime withDays(long days)  
LocalDateTime withHours(long hours)  
LocalDateTime withMinutes(long minutes)  
LocalDateTime withSeconds(long seconds) 
-------------------------------------------------    
LocalDateTime withNanos(long nanos)  
LocalDateTime withWeeks(long weeks) 
    
注意:
	1. 记得接收, 因为时间修改是生成新的LocalDateTime对象,老的LocalDateTime对象不会改变
Period
Period : 时间间隔类 -> 表示年月日的时间间隔

获得对象的方法:
	static Period between(LocalDate startDateInclusive, LocalDate endDateExclusive) : 获取2个年月日时间对象的时间间隔对象
Duration
Duration : 时间间隔类 -> 表示时分秒的时间间隔

获得对象的方法:
	static Duration between(Temporal startInclusive, Temporal endExclusive)  
       	//Temporal接口 是 LocalDateTime/LocalDate/LocalTime的父接口
        虽然Temporal可以接收LocalDate,但是由于LocalDate只有年月日的时间信息,Duration获取不到时分秒的时间间隔,会有异常!!
        
成员方法:
	long toDays(): 获取Duration对象时间间隔的天数
	
集合的概述
集合 : 用来存储数据的容器;

集合的特点:
	1. 长度可变 -> 取代数组的原因(集合的底层是数组)
    2. 只能存对象 -> 集合中的数据类型只能是引用数据类型(JDK已经解决这个问题)
    3. 集合只能临时存储数据不能做永久存储
    
集合的分类:
	单列集合 Collection
	双列集合 Map
	
学习容器的方法:
	1. 如何创建容器
	2. 增删改查四类功能
	3. 遍历
单列集合的体系结构
Collection
创建Collection<E>集合对象
	Collection<E> 集合名 = new 具体的实现类对象<E>();
		例如 :
			Collection<E> 集合名 = new ArrayList<E>();
			Collection<E> 集合名 = new HashSet<E>();

	格式解释:
		<E> : 泛型 -> 作用用来约束集合中元素的数据类型的  举例: 类似于垃圾桶上的标签
			如何使用 : 在具体创建对象的时候,拿具体的引用数据类型名称替换E即可
				例如: Collection<String> 集合名 = new ArrayList<>();
				例如: Collection<Student> 集合名 = new ArrayList<>();
			泛型的注意事项:
				1. 只能是引用数据类型
				2. 前后泛型必须一致
				3. 如果你不写泛型(不写泛型尖括号也不能写)集合的默认泛型是Object -> 强烈推荐写!!
                    
增删改查::
		*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<E> iterator() 
    3. 增强for循环 (能用迭代器遍历的一定能用增强for)    
Iterator迭代器
Iterator<E>接口中有2个方法:
	boolean hasNext(): 查看容器中是否有下一个元素,如果有返回true
	E next() : 拿到容器中的下一个元素

迭代器的使用步骤:
	1. 获取迭代器对象 :
		 Iterator<E> it = 单列集合对象.iterator();
	2. 循环操作 : 判断集合中是否有下一个元素
	3. 如果有,拿到集合的这个元素; 以此往复,直到集合元素全部获取完毕
	
ConcurrentModificationException:并发修改异常
        此异常只在迭代器中发生,触发的条件: 当使用迭代器对象遍历集合的时候,使用集合对象对原集合进行增删改操作都会出这个异常
        解决方案:
            1. 不修改
            2. 使用列表迭代器(ListIterator)对象进行修改	
            
        触发时机 : 只要创建了迭代器对象,就不可以使用集合对象修改集合中的元素的内容!!    

请添加图片描述

增强for循环
增强for循环,超级for循环,foreach

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

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

增强for只用来遍历集合/数组,不在在增强for循环中修改集合内容!!(不要再增强for中写复杂代码)
包装类
集合中不可以存储基本数据类型的元素,因为泛型<E>只能代表一种引用数据类型
	错误 : ArrayList<int> list;
	正确 : ArrayList<Integer> list;

包装类 : 把每一个基本数据类型再次包装成为一种引用数据类型
	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();


所有的包装类中都有(Character除外): static 基本数据类型 parseXxxx(字符串类型的基本值);
    举例 :
        Integer类中: static int parseInt(String类型的int)
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()  
ListIterator列表迭代器
ListIteratorIterator接口的子接口!
    
ListIterator<E>接口中有2个方法:
	boolean hasNext(): 查看容器中是否有下一个元素,如果有返回true
	E next() : 拿到容器中的下一个元素

迭代器的使用步骤:
	1. 获取迭代器对象 :
		 ListIterator<E> lit = List接口实现对象.listIterator();
	2. 循环操作 : 判断集合中是否有下一个元素
	3. 如果有,拿到集合的这个元素; 以此往复,直到集合元素全部获取完毕
ArrayList
ArrayList<E> : 完美的元素可重复的List接口实现!!
    底层数据结构是数组!! 数组结构带来了: 查询快,增删慢!
        
ArrayList<E>: 存取有序 , 元素有索引 , 元素能重复

创建ArrayList<E>集合对象
	ArrayList<E> 集合名 = new ArrayList<E>();
                    
增删改查::
		*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()          
Collection
创建Collection<E>集合对象
	Collection<E> 集合名 = new 具体的实现类对象<E>();
		例如 :
			Collection<E> 集合名 = new ArrayList<E>();
			Collection<E> 集合名 = new HashSet<E>();

	格式解释:
		<E> : 泛型 -> 作用用来约束集合中元素的数据类型的  举例: 类似于垃圾桶上的标签
			如何使用 : 在具体创建对象的时候,拿具体的引用数据类型名称替换E即可
				例如: Collection<String> 集合名 = new ArrayList<>();
				例如: Collection<Student> 集合名 = new ArrayList<>();
			泛型的注意事项:
				1. 只能是引用数据类型
				2. 前后泛型必须一致
				3. 如果你不写泛型(不写泛型尖括号也不能写)集合的默认泛型是Object -> 强烈推荐写!!
                    
增删改查::
		*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<E> iterator() 
    3. 增强for循环 (能用迭代器遍历的一定能用增强for)    
Iterator迭代器
Iterator<E>接口中有2个方法:
	boolean hasNext(): 查看容器中是否有下一个元素,如果有返回true
	E next() : 拿到容器中的下一个元素

迭代器的使用步骤:
	1. 获取迭代器对象 :
		 Iterator<E> it = 单列集合对象.iterator();
	2. 循环操作 : 判断集合中是否有下一个元素
	3. 如果有,拿到集合的这个元素; 以此往复,直到集合元素全部获取完毕
	
ConcurrentModificationException:并发修改异常
        此异常只在迭代器中发生,触发的条件: 当使用迭代器对象遍历集合的时候,使用集合对象对原集合进行增删改操作都会出这个异常
        解决方案:
            1. 不修改
            2. 使用列表迭代器(ListIterator)对象进行修改	
            
        触发时机 : 只要创建了迭代器对象,就不可以使用集合对象修改集合中的元素的内容!!    

请添加图片描述

增强for循环
增强for循环,超级for循环,foreach

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

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

增强for只用来遍历集合/数组,不在在增强for循环中修改集合内容!!(不要再增强for中写复杂代码)
包装类
集合中不可以存储基本数据类型的元素,因为泛型<E>只能代表一种引用数据类型
	错误 : ArrayList<int> list;
	正确 : ArrayList<Integer> list;

包装类 : 把每一个基本数据类型再次包装成为一种引用数据类型
	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();


所有的包装类中都有(Character除外): static 基本数据类型 parseXxxx(字符串类型的基本值);
    举例 :
        Integer类中: static int parseInt(String类型的int)
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()  
ListIterator列表迭代器
ListIteratorIterator接口的子接口!
    
ListIterator<E>接口中有2个方法:
	boolean hasNext(): 查看容器中是否有下一个元素,如果有返回true
	E next() : 拿到容器中的下一个元素

迭代器的使用步骤:
	1. 获取迭代器对象 :
		 ListIterator<E> lit = List接口实现对象.listIterator();
	2. 循环操作 : 判断集合中是否有下一个元素
	3. 如果有,拿到集合的这个元素; 以此往复,直到集合元素全部获取完毕
ArrayList
ArrayList<E> : 完美的元素可重复的List接口实现!!
    底层数据结构是数组!! 数组结构带来了: 查询快,增删慢!
        
ArrayList<E>: 存取有序 , 元素有索引 , 元素能重复

创建ArrayList<E>集合对象
	ArrayList<E> 集合名 = new ArrayList<E>();
                    
增删改查::
		*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()          
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值