List Map互相转换习题1

本文详细介绍如何在Java中实现List和Map数据结构之间的转换,包括将List中的Student对象转换为Map,以及将Map中的Student映射信息封装到List中。通过具体的代码示例,读者可以学习到数据结构转换的基本步骤和技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

List Map互相转换习题1

5、实现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对象

功能1:先完成Student类

package xx
/**
 * @author tutusang
 */
public class Student {
//	Student(int id,String name,int age,String sex )
	private int id; 
	private String name;
	private int age ;
	private String sex;
	public Student () {}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	@Override
	public String toString() {
		return "Student [id=" + id + ", name=" + name + ", age=" + age + ", sex=" + sex + "]";
	}
	public Student(int id, String name, int age, String sex) {
		super();
		this.id = id;
		this.name = name;
		this.age = age;
		this.sex = sex;
	}
}

完成public void listToMap( ){ }方法

package xx
/**
 * @author tutusang
 */
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;

public class ListtoMap {
	private Student stu ;
	
	public Student getStu() {
		return stu;
	}

	public void setStu(Student stu) {
		this.stu = stu;
	}
	public ListtoMap() {}
	
	public void listToMap(){
		List<Student> l1 = new ArrayList<Student>();
		for (int i = 0;; i++) {
			Scanner sc = new Scanner(System.in);
			System.out.println("请输入学生信息:编号,姓名,年龄,性别。输入exit退出");
			String regex = "\\w+,\\w{2,4},\\d{1,3},\\w+";
			String in = sc.next();
			if(in.equals("exit")) {
				break;
			}else if(in.matches(regex)) {
				System.out.println("输入信息正确,是否继续输入?");
				String []x = in.split(",");
				int id = Integer.parseInt(x[0]);
				int age = Integer.parseInt(x[2]);
				Student a = new Student(id, x[1], age, x[3]);
				l1.add(a);
			}else {
				System.out.println("输入信息有误,请重新输入:");
			}
		}
		Map<Integer, Student> map  = new HashMap<Integer,Student>();
		Iterator<Student> it = l1.iterator();
		while (it.hasNext()) {
			Student stu1 = (Student)it.next();
			System.out.println(stu1);
			map.put(stu1.getId(), stu1);
		}
		Set<Integer> s1 = map.keySet();
		for (int i :s1) {
			System.out.println("编号:\t"+i+"\t"+map.get(i));
		}	
	}	
}

功能2:先创建StudentEntry类

package xx
/**
 * @author tutusang
 */
public class StudenEntry {
	  private int key;
	  private Student stu;
	  public StudenEntry() {}
	public int getKey() {
		return key;
	}
	public void setKey(int key) {
		this.key = key;
	}
	public Student getStu() {
		return stu;
	}
	public void setStu(Student stu) {
		this.stu = stu;
	}
	public StudenEntry(int key, Student stu) {
		super();
		this.key = key;
		this.stu = stu;
	}
	  
}

再编写public void mapToList( ){ }

package xx
/**
 * @author tutusang
 */
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;
import java.util.Set;
public class MapToList {
private Student stu ;
	
	public Student getStu() {
		return stu;
	}

	public void setStu(Student stu) {
		this.stu = stu;
	}
	public  MapToList() {}
	public void mapToList( ){
		  Map<Integer,Student> map = new HashMap<>();
	      for (int i = 0;; i++) {
				Scanner sc = new Scanner(System.in);
				System.out.println("请输入学生信息:编号,姓名,年龄,性别。输入exit退出");
				String regex = "\\w+,\\w{2,4},\\d{1,3},\\w+";
				String in = sc.next();
				if(in.equals("exit")) {
					break;
				}else if(in.matches(regex)) {
					System.out.println("输入信息正确,是否继续输入?");
					String []x = in.split(",");
					int id = Integer.parseInt(x[0]);
					int age = Integer.parseInt(x[2]);
					Student a = new Student(id, x[1], age, x[3]);
					map.put(id, a);
				}else {
					System.out.println("输入信息有误,请重新输入:");
				}
			}
	      Set<Entry<Integer,Student>> entrySet = map.entrySet();
	      List<StudenEntry> list = new ArrayList<StudenEntry>();
	      for (Entry<Integer, Student> entry : map.entrySet()){
	          StudenEntry studentEntry = new StudenEntry();
	          studentEntry.setKey(entry.getKey());
	          studentEntry.setStu(entry.getValue());
	          list.add(studentEntry);
	      }
	      Iterator<StudenEntry> it = list.iterator();
	      while (it.hasNext()){
	        StudenEntry s2 = it.next();
	     System.out.println(s2.getStu());
	      }  
	}
}

之后测试,就可以执行了。

public class Test {

	public static void main(String[] args) {
		ListtoMap a = new ListtoMap();
		a.listToMap();
		MapToList b  = new MapToList();
		b.mapToList();
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值