实现List和Map数据的转换

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

功能一,二、代码如下:

分析:功能一)就是在list里面直接new Student,顺便将内容也写进去,然后加强for循环遍历list,从中提取Student的Id作为Map的“键”,将学生信息Student放入“value”,从而实现ListToMap的方法。(功能二)就是在Map里面直接new  Student,先将Map转成EntrySet键值对集合,然后加强for循环遍历EntrySet,再将键值对存放到 new StudentEntry()构造方法中,在该类中定义一个一样的Map成员变量;再直接定义一个ArrayList集合,直接将StudentEntry类对象添加进去即可

测试类代码:
public class Test1 {
    public static void main(String[] args) {
//        listToMap();
        mapToList();

    }

    public static void mapToList() {
        HashMap<Integer, Student> map1 = new HashMap<>();
        map1.put(1001, new Student(1001, "a1", 18, "男"));
        map1.put(1002, new Student(1002, "a2", 19, "女"));
        map1.put(1003, new Student(1003, "a3", 12, "男"));
        map1.put(1008, new Student(1008, "a8", 16, "女"));
        map1.put(1004, new Student(1004, "a4", 10, "男"));

        //创建一个List集合
        ArrayList<StudentEntry> studentEntries = new ArrayList<>();

        //遍历map集合得到每个学生的entry
        Set<Map.Entry<Integer, Student>> entries = map1.entrySet();
        for (Map.Entry<Integer, Student> entry : entries) {
            StudentEntry studentEntry = new StudentEntry(entry);
            studentEntries.add(studentEntry);
        }


        //遍历List集合,输出每个键值对的键和值
        for (StudentEntry studentEntry : studentEntries) {
            Map.Entry<Integer, Student> entry = studentEntry.getEntry();
            Integer id = entry.getKey();
            Student stu = entry.getValue();
            System.out.println(id + "-" + stu);
        }


    }


    public static void listToMap() {
        //创建一个List集合
        ArrayList<Student> list1 = new ArrayList<>();
        list1.add(new Student(1001, "a1", 18, "男"));
        list1.add(new Student(1002, "a2", 19, "女"));
        list1.add(new Student(1003, "a3", 12, "男"));
        list1.add(new Student(1008, "a8", 16, "女"));
        list1.add(new Student(1004, "a4", 10, "男"));

        //2)    遍历List ,输出每个Student信息
        for (Student student : list1) {
            System.out.println(student);
        }

        //3)    将List中数据放入Map ,使用Student的id属性作为key ,使用Student对象 信息作为value
        HashMap<Integer, Student> map1 = new HashMap<>();
        for (Student student : list1) {
            int id = student.getId();
            map1.put(id, student);
        }

        //4)    遍历Map ,输出每个Entry的key和value
        Set<Map.Entry<Integer, Student>> entries = map1.entrySet();
        for (Map.Entry<Integer, Student> entry : entries) {
            Integer id = entry.getKey();
            Student stu = entry.getValue();
            System.out.println(id + "-" + stu);
        }

    }
}
Student学生类代码:重写toString方法
public class Student {
    //int id,String name,int age,String sex
    private int id;
    private String name;
    private int age;
    private String sex;

    public Student() {
    }

    public Student(int id, String name, int age, String sex) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.sex = sex;
    }

    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 + '\'' +
                '}';
    }
}

StudentEntry(学生信息键值对)类代码:

分析:要实现List直接写入StudentEntry对象,需要先定义一个Map成员变量,和测试类所写的Map一模一样;

import java.util.Map;

public class StudentEntry {
    private Map.Entry<Integer, Student> entry;

    public StudentEntry() {
    }

    public StudentEntry(Map.Entry<Integer, Student> entry) {
        this.entry = entry;
    }


    public Map.Entry<Integer, Student> getEntry() {
        return entry;
    }

    public void setEntry(Map.Entry<Integer, Student> entry) {
        this.entry = entry;
    }
}

  • 10
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我的K8409

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值