容器遍历和IO流

学习主题:容器遍历以及IO流
学习目标:
1 掌握容器的遍历
2 掌握IO流的基本概念,结构,以及文件字节流

1.迭代器_遍历List_Set
(1)迭代器的由来是什么?
Iterator是一个接口,因为list和set的数据结构不同,使用迭代器的话就不用考虑数据结构,拿到这个对象就可以遍历这个对象的内部。Iterator接口有三个方法:next();hasNext();remove();

(2)使用迭代器遍历集合的原理是什么?
在容器中获取迭代器。使用循环判断下一个元素是否存在。如果下一个元素存在就获取,没有就结束循环。

2.迭代器_遍历Map
(1)ListIterator接口比Iterator扩展的哪些方法?
ListIterator接口是Iterator接口的扩展,可以用于解决并发修改异常
hasPrevious();判断是否有前一个
previous();获取前一个元素
nextIndex();获取下一个索引
previousIndex();获取前一个索引
set(E e);
add(E e);添加一个元素。
(2)并发修改异常是如何产生的?
在使用迭代器遍历集合时,又使用集合对象进行添加元素。

3.容器体系框架总结
(1)画出集合体系框架图?
在这里插入图片描述
(2)集合和数组的异同点?
1、数组声明了它容纳的元素的类型,而集合不声明。
2、数组是静态的,一个数组实例具有固定的大小,一旦创建了就无法改变容量了。而集合是可以动态扩展容量,可以根据需要动态改变大小,集合提供更多的成员方法,能满足更多的需求。
3、数组是一组具有相同类型的数据的集合

4.IO流的基本概念
(1)简述IO流的原理?
1、在java程序中,对于数据的输入/输出操作以“流”方式进行
2、J2SDK提供了各种各样的“流”类,用以获取不同种类的数据,程序中通过标准的方法输入或输出数据
3、Java的流类型一般位于java.io包中
(2)Java中关于IO流的定义 ?
java的io是实现输入和输出的基础,可以方便的实现数据的输入和输出操作。在java中把不同的输入/输出源(键盘,文件,网络连接等)抽象表述为“流”(stream)。通过流的形式允许java程序使用相同的方式来访问不同的输入/输出源。stram是从起源(source)到接收的(sink)的有序数据。

5.流的细分和体系_四大抽象类
(1)IO流可以分为哪几类?
根据流的方向:输入流,输出流
根据处理数据单元:字节流,字符流
根据功能:字节流,处理流
(2)流的四大抽象类分别是什么?
InputStream , OutputStream , Reader , Writer

6.文件字节流
(1)FileInputStream的常用方法有哪些?
1、abstract int read()
2、int read(byte b[])
3、int read(byte b[],int off,int len)
4、int available()
5、Close()
(2)FileOutputStream的常用方法有哪些?
1、abstract void write(int b)
2、void write(byte b[])
3、void write(byte b[] , int off , int len )
4、void flush()
5、void close()

7.使用字节流实现文件复制
(1)简述使用字节流实现文件复制的原理?
在这里插入图片描述
(2)简述使用字节流实现文件复制的步骤?
public static void main(String[] args) {
//数据源
FileInputStream fis=null;
//目的地
FileOutputStream fos=null;
try {
fis = new FileInputStream(“E:\test.txt”);
fos = new FileOutputStream(“D:\test2.txt”);

		//存储读取到的字节
		byte[] buf=new byte[1024];
		int len=0;
		while((len=fis.read(buf))!=-1){
			fos.write(buf,0,len);
		}
	} catch (FileNotFoundException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	} catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}finally{
		//关闭
		if(fis!=null){
			try {
				fis.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		if(fos!=null){
			try {
				fos.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
	}

学习主题: IO流
学习目标:

8.文件字符流
(1)Reader常用的方法有哪些?
1、int read()
2、Int read(char[]cbuf,int off,int len)
3、Int read(char[]cbuf)
4、Int available()
5、Close()
(2)Writer常用的方法有哪些?
1、void write(int c)
2、void write(char[]cbuf)
3、abstract void write(char[]cbuf,int off,int len)
4、void write(String str)
5、abstract void flush()

9.缓冲字节流_缓冲字符流
(1)缓冲字节流的特点是什么?
提高读写文件效率
(2)简述使用缓冲字节流进行文件复制时提高效率的原理是什么?
提高效率的原理:读文件和写文件都使用了缓冲区,减少了读写次数,从而提高了效率;当创建者两个缓冲流的对象时,会创建内部缓冲数组,缺省使用32字节大小的缓冲区;当读取数据时,数据按块读入缓冲区,其后的读操作则直接访问缓冲区;当写入数据时,首先写入缓冲区,当缓冲区满时,其中的数据写入所连接的输入流。使用方法flush()可以强制将缓冲区的内容全部写入输入流;关闭流的顺序和打开顺序相反,只要关闭高层流即可

10.转换流
(1)InputStreamReader的作用是什么?
把InputStream转换成Reader

(2)OutputStreamWriter的作用是什么?
把OutputStream转化成Writer

11.打印流
(1)简述PrintStream的特点?
提供了一系列的print()和println(),可以实现将基本数据类型转换成字符串格式化输出,对于对象类型的话就先调用toString()方法,然后输出该方法返回的字符串

(2)简述PrintWriter与PrintStream的区别?
PrintStream的输出功能非常强大,通常需要输出文本内容,都可以将输出流包装成PrintStream后进行输出; PrintWriter:使用字符流的时候需要手动刷新,关闭
System.out和System.err都是PrintStream的实例,代表显示器;PrintStream的方法都不抛出IOException

12.数据流
(1)数据流的作用是什么?
提供了可以存取所有java类型的数据的方法

(2)你学过的流中哪些是处理流?
字节流,二进制文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值