Day-12 java-Map集合以及IO流问题

Map集合的嵌套和遍历

年级班级学生学号问题

package sunyuanze;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;

public class t1201 {
	//输出年级-班级-具体学号问题
	public static void main(String[] args) {
		//名单集合
		Map<String,String> name=null;
		//班级集合
		Map<String,Map<String,String>> classes=null;
		//年级集合
		Map<String,Map<String,Map<String,String>>> grades=new HashMap<String,Map<String,Map<String,String>>>();
		
		int no=1;
		for(int i=1;i<=6;i++) {
			//创建班级集合
			classes=new HashMap<>();
			grades.put(i+"年级", classes);
			
			for(int j=1;j<=5;j++) {
				
				//创建名单集合
				name=new HashMap<>();
				classes.put(i+"年级"+j+"班", name);
				
				for(int k=1;k<=6;k++) {
					
				//创建学号	
					name.put("NO."+i+"-"+j+"-"+k,"tom"+(no++));
					
				}
				
			}
			
		}
		
		//迭代输出
		/*for(Entry<String,Map<String,Map<String,String>>> entry:grades.entrySet()) {
			//年级名称
			String key=entry.getKey();
			//班级集合
			Map<String, Map<String,String>> classes0=entry.getValue();
			//先输出年级名称
			System.out.println(key);
			
			for(Entry<String, Map<String,String>> e:classes0.entrySet()) {
			//班级名称
				String className=e.getKey()	;
				Map<String,String> v=e.getValue();
				
				System.out.println("\t"+className);
				for(Entry<String, String> e2:v.entrySet()) {
				String xuehao =e2.getKey();
				String mingcheng=e2.getValue();
					System.out.println("\t\t"+xuehao+"-"+mingcheng);
					
					
				}
				
			}
			
			
		}*/
		
		//迭代器
		Iterator<Entry<String,Map<String,Map<String,String>>>> it1=grades.entrySet().iterator();
		while(it1.hasNext()){
			Entry<String,Map<String,Map<String,String>>> e1= it1.next();
			String k1=e1.getKey();			//年级名称
			Map<String,Map<String,String>> v1=e1.getValue();	//一个年级(整个年级班级集合)
			System.out.println(k1);
			Iterator<Entry<String,Map<String,String>>> it2=v1.entrySet().iterator();			
			while(it2.hasNext()) {
				Entry<String,Map<String,String>> e2=it2.next();
				String k2=e2.getKey();		//班级名称
				Map<String,String> v2=e2.getValue();		//一个班级(所有同学集合)
				System.out.println("\t"+k2);
				Iterator<Entry<String,String>> it3=v2.entrySet().iterator();
				while(it3.hasNext()) {
				Entry<String,String> e3=it3.next();
				String k3=e3.getKey();
				String v3=e3.getValue();
				System.out.println("\t\t"+k3+"-"+v3);
					
					
				}
				
			}
			
		}
		
		
	}
	
}

List接口中常用类

Vector:线程安全,但速度慢,已被ArrayList替代。
ArrayList:线程不安全,查询速度快。
LinkedList:链表结构,增删速度快,取出List集合中元素的方式。
取出List集合中的元素的方式:
get(int index):通过脚标获取元素。
iterator():通过迭代方法获取迭代器对象。

函数的另一种表现形式

返回值类型 函数名(参数类型  …  形式参数)
{
		执行语句;

}

其实接受的是一个数组,可以指定实际参数个数

IO

Input 和 output 流

  1. io流用来处理设备之间的数据传输

  2. java对数据的操作是通过流的方式

  3. java用于操作流的对象都在io包中

  4. 流按操作分为两种(数据类型)

    a. 字符流;操纵文本
    b. 字节流;二进制文件 byte

  5. 流按流向分为
    a. 输入流;读操作
    b. 输出流

IO流常用基本类

字节流的抽象基本类:

InputStream,OutputStream。

字符流的抽象基类:

Reader,Writer

FileWriter(常用类)
用于写入字符文件

java.io.FileWriter
1.	new FileWriter(String str);
2.	write(String str);
写入字符数据到流中
3.	flush();
清理流,将流中数据写入到设备中
4.close();
	关闭流,隐含着flush()操作
5.流在close()之后不能再写入

字符流-创建文件

创建流对象,建立数据存放文件
FileWriter fw=new FileWriter(“Test.txt”);

调用流对象的写入方法,将数据写入流
fw.write(“test”);

关闭流资源,并将流中的数据清空到文件中
fw.close();

package sunyuanze;

import java.io.FileWriter;
import java.io.IOException;

public class t1205 {


	public static void main(String[] args) {
		
		try {
			FileWriter writer=new FileWriter("d:\\hello.txt");
			writer.write("HELLO WORLD!");
			writer.close();
			System.out.println("ok");
		} catch (IOException e) {
			
			e.printStackTrace();
		}
		
		
		

	}

}

字符流-读取文件

建立一个流对象,将已存在的一个文件加载进流
FileReader fr = new FileReader(“Test.txt”);

创立一个临时存放数据的数组
char[] ch = new char[1024];

调用流对象的读取方法将流中的数据读入到数组中
fr.read(ch);

package sunyuanze;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class t12051 {

	public static void main(String[] args) {
		FileReader reader = null;
		try {
			reader = new FileReader("d:\\hello.txt");
			char[] buffer=new char[3];
			
			int len=-1;
			while((len=reader.read(buffer))!=-1) {
				
				System.out.print(new String(buffer,0,len));
								
			}
		System.out.println("========================");
		
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		
			} catch (IOException e) {
			e.printStackTrace();
		}
			finally {
				if(reader!=null) {
					try {
						reader.close();
					} catch (IOException e) {
						e.printStackTrace();
					}
					
				}
			}
		
		
		
	}
	
}

常用方法

flush 清理
refresh 刷新
clear 清空

猜你喜欢

转载自blog.csdn.net/weixin_43740331/article/details/85036669