集合和流的综合运用

编写程序,满足如下需求:  
建立"gbk"编码文件“users.text”内容如下,存储了各人员各年龄的工资信息。
----------------------
姓名 年龄 工资
张飞-18-5000
熊大-20-15000
关羽-20-20000
赵云-19-6000
诸葛亮-19-30000           
----------------------
利用list,set,map容器解决下面需求
1)建立类Person,用其对象来描述某人某年龄的工资信息。
2)把文件里每一行的信息存储在Person对象中,把文件所有行数据存储在Map<String,Person>容器中。
键:人的名字;值:人对应的Perosn对象。
3)把map容器里所有人的年龄取出来放入list或set年龄容器中,再遍历年龄容器打印所有年龄,要求年龄不能重复。

4)把map容器里所有人的工资取出来放入list或set工资容器中,把工资升序排列。再遍历打印所有工资。


public class Test8 {

	public static void main(String[] args) {
		
		Map<String, Person> map1= dome2();
		dome3(map1);
		dome4(map1);
	}
	private static void dome4(Map<String, Person> map) {
		List<Integer> sals=new ArrayList<Integer>();
		for (Person curPerson : map.values()) {
			sals.add(curPerson.sal);
		}
		Collections.sort(sals);
		System.out.println("排序后:"+sals);
		
	}
	private static void dome3(Map<String, Person> map) {
		Set<Integer> ages=new HashSet<Integer>();
		for (Person curPerson : map.values()) {
			ages.add(curPerson.age);
		}
		System.out.println("set内容:"+ages);
	}
	//2
	private static Map<String, Person> dome2() {
		File file=new File("src/exam/users.text");		   
		BufferedReader br=null;
		try {
			br=new BufferedReader(new InputStreamReader(
					new FileInputStream(file), "gbk"));
			String buff;
			Map<String,Person> map=new HashMap<String, Person>();
			while ((buff=br.readLine())!=null) {
				if(buff.contains("-")){
					String[] perArr= buff.split("-");
					int age=Integer.parseInt(perArr[1].trim());
					int sal=Integer.parseInt(perArr[2].trim());
					Person p=new Person(perArr[0],age, sal);
					map.put(p.name,p);
				}
			}
			System.out.println(map);
			return map;
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
       	   try{
       		   if(br!=null){
       			   br.close();
       		   }
       	   }catch(IOException e){
       		   e.printStackTrace();
       	   }
			
		}
		return null;
	}
}
class Person{
	String name;
	int age;
	int sal;
	public Person(String name, int age, int sal) {
		super();
		this.name = name;
		this.age = age;
		this.sal = sal;
	}
	@Override
	public String toString() {
		return "\n Person [name=" + name + ", age=" + age + ", sal=" + sal + "]";
	}	
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值