首页 > 解决方案 > 如何将列表填写到我的 HashMap 中?

问题描述

首先我有三门课:

数据.java:

public class Data {
    
    public static List<String> studentdataget(){
        List<String> studentData = new ArrayList<String>();
        // Format:
        // Name ; Number ; Subject
        
        studentData.add("Quee;810283;MathI");
        studentData.add("Hor;812227;Math I");
        studentData.add("Oper;810369;Math II");
        studentData.add("Graf;811090;MathI");
        studentData.add("Ingri;811911;MathI");

学生.java:

public class Student {
    
    private static String name = "";
    private static int number = 0;
    private static String subject = ""; 
    

    public Student(String name, int number, String subject) {
        this.name = name;
        this.number = number;
        this.subject = subject;
    }
    
    
    public static String getnumber(String segs) {
        return number;
    }
    
    public static  int getnumber(String segs) {
        return number;
    }

    public static String getName() {
        return name;
    }

    public void setsubject(String subject) {
        this.subject = subject;
    }

    public void setnumber(int number) {
        this.number = number;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String toString() {
        String returnString = name + " (" + number + "), Subject: " + subject;      
        return returnString;
    }
}

主.java:

public class main {

        public static void main(String[] args) {
            String path = "Name;number;subject";
            String[] segs = path.split( Pattern.quote( ";" ) );
            //System.out.println( (segs[2]));
            
            HashMap<String, String> studentData = new HashMap<String, String>();
            
            studentData.put(segs[1],segs[2]);
            
            
            for (Map.Entry<String, String> pair: studentData.entrySet()) {
                  System.out.format("key: %s, value: %s\n", pair.getKey(), pair.getValue());
                }
            for(Map.Entry<String, String> pair: studentData.entrySet()) {
                
                
            }
        }
                
       }

所以问题是如何从我的 Data.class 中放入我的第二个 for 循环列表?我只想显示数字和主题这可能吗?我尝试了很多方法,但没有人让我找到解决方案..我希望有人能给我一个解决方案

标签: java

解决方案


studentData要从另一个类访问该方法,您可以使用此表示法Data.studentdataget();,因为studentdataget()is static

您只需在yout 列表的每个条目中split()即可将它们拆分为. 因此,您可以使用最后两个索引来获取所需的数据。;[Quee, 810283, MathI]

这假设所有数据studentData保持一致。

public static void main(String[] args) {
    List<String> students = Data.studentdataget(); // access Data here

    HashMap<String, String> classes = new HashMap<>();

    // fill our map from the data found in Data.studentdataget
    for (String student: students) {
        String[] arr = student.split(";"); // split string into array on each ;
        classes.put(arr[1], arr[2]); // fill map based on student data set
    }

    // print the map
    for (Map.Entry<String, String> entry : classes.entrySet()) {
        System.out.println(entry.getKey() + ":" + entry.getValue());
    }
}

推荐阅读