Java学习之容器(3)---作业

题目如下:
实现List和Map数据的转换。具体要求如下:
【功能1】:定义方法public void listToMap( ){ }将List中Student元素封装到Map中

  1. 使用构造方法Student(int id,String name,int age,String sex )创建多个学生信息并加入List;

  2. 遍历List,输出每个Student信息;

  3. 将List中数据放入Map,使用Student的id属性作为key,使用Student对象信息作为value;

  4. 遍历Map,输出每个Entry的key和value。

【功能2】:定义方法public void mapToList( ){ }将Map中Student映射信息封装到List

  1. 创建实体类StudentEntry,可以存储Map中每个Entry的信息;

  2. 使用构造方法Student(int id,String name,int age,String sex )创建多个学生信息,并使用Student的id属性作为key,存入Map;

  3. 创建List对象,每个元素类型是StudentEntry;

  4. 将Map中每个Entry信息放入List对象。

【功能3】:说明Comparable接口的作用,并通过分数来对学生进行排序。

个人答案如下:

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

public class HomeWork {
	public static Map<Integer,Student> listToMap(List<Student> l ) {//将List中Student元素封装到Map中
		/*1) 使用构造方法Student(int id,String name,int age,String sex )创建多个学生信息并加入List;

	      2) 遍历List,输出每个Student信息;

	      3) 将List中数据放入Map,使用Student的id属性作为key,使用Student对象信息作为value;

	      4) 遍历Map,输出每个Entry的key和value。
	      */
		
		
		
		//遍历使用通用的接口Iterator迭代器
		//回顾:Iterator迭代器有两个最重要的方法:.next 和 .hasNext
		System.out.println("List中原有的数据如下:");
		for (Iterator<Student> iter = l.iterator();iter.hasNext();) {
			System.out.println(iter.next());
		}
		
		System.out.println("重排后数据如下:");
		Collections.sort(l, null);
		for (Iterator<Student> iter = l.iterator();iter.hasNext();) {
			System.out.println(iter.next());
		}
		
		
		Map<Integer,Student> m = new HashMap<>();
		
		//将List中的对象放入Map内
		for (int i = 0;i < l.size();i++) {
			m.put(l.get(i).id, l.get(i));
			System.out.println("ID"+l.get(i).id+"已成功导入");
		}
		
		return m;
		
	}
	
	public static List<Entry<Integer,Student>> mapToList(Map<Integer, Student> m) {//将Map中Student映射信息封装到List
		/*1) 创建实体类StudentEntry,可以存储Map中每个Entry的信息;

	      2) 使用构造方法Student(int id,String name,int age,String sex )创建多个学生信息,并使用Student的id属性作为key,存入Map;
	
	      3) 创建List对象,每个元素类型是StudentEntry;
	
	      4) 将Map中每个Entry信息放入List对象。
	      */
		
		//Entry对象使用Set存储
		Set<Entry<Integer,Student>> studentEntry = m.entrySet();
		List<Entry<Integer,Student>> result = new ArrayList<>();
		
		for(Iterator<Entry<Integer,Student>> iter = studentEntry.iterator();iter.hasNext();) {
			result.add(iter.next());
		}
		
		return result;
	}
	
	public static void main(String[] args) {
		Student stu1 = new Student(1001,"张三",18,"男");
		Student stu2 = new Student(1002,"李四",20,"男");
		Student stu3 = new Student(1003,"lex",19,"女");
		Student stu4 = new Student(1004,"王五",17,"男");
		
		List<Student> l = new ArrayList<>();
		l.add(stu1);
		l.add(stu2);
		l.add(stu3);
		l.add(stu4);

		Map<Integer,Student> m;
		m = listToMap(l);
		
		System.out.println("导入Map后的信息如下:");
		//遍历Map方法:先取Map的键值KEY,用Set存储
		Set<Integer> keySet = m.keySet();
		for(Integer key : keySet) {
			System.out.println("[key]:"+key+",[value]:"+m.get(key));
		}
		
		List<Entry<Integer,Student>> l2 = mapToList(m);
	
		System.out.println("导入List后的信息如下(Entry):");
		System.out.println(l2);
		
		
		
		
		
	}
}


class Student implements Comparable<Student>{
	int id;
	String name;
	int age;
	String sex;
	
	@Override
	public String toString() {
		return "id:"+id+" \tname:"+name+"\tage:"+age+"\tsex:"+sex;
	}
	
	
	public Student() {	
		
	}
	
	
	public Student(int id, String name, int age, String sex) {
		super();
		this.id = id;
		this.name = name;
		this.age = age;
		this.sex = sex;
	}


	@Override
	public int compareTo(Student o) {//负数:小于 , 0:等于 , 正数:大于
		// TODO Auto-generated method stub
		//按年龄排序
		if (this.age>o.age) {
			return 1;
		}else if (this.age < o.age) {
			return -1;
		}else {
			return 0;
		}
	}
	
}

猜你喜欢

转载自blog.csdn.net/Arthur_____/article/details/88207059