Java 如何将列表填入HashMap?

Java 如何将列表填入HashMap?,java,Java,首先,我有三门课: Data.java: public class Data { public static List<String> studentdataget(){ List<String> studentData = new ArrayList<String>(); // Format: // Name ; Number ; Subject studen

首先,我有三门课:

Data.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");
main.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()) {
                
                
            }
        }
                
       }
公共类主{
公共静态void main(字符串[]args){
String path=“名称;编号;主题”;
字符串[]segs=path.split(Pattern.quote(“;”);
//System.out.println((segs[2]);
HashMap studentData=新HashMap();
studentData.put(segs[1],segs[2]);
对于(Map.Entry对:studentData.entrySet()){
System.out.format(“键:%s,值:%s\n”,pair.getKey(),pair.getValue());
}
对于(Map.Entry对:studentData.entrySet()){
}
}
}
所以问题是如何将Data.class中的列表放入第二个for循环? 我只想显示数字和主题,这可能吗?
我已经尝试了很多方法,但没有人能让我找到解决办法。。我希望有人能给我一个解决方案

要从另一个类访问
studentData
方法,您可以使用这个符号
Data.studentdataget()因为
studentdataget()

你只是在
,以将它们拆分为
[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());
    }
}
publicstaticvoidmain(字符串[]args){
List students=Data.studentdataget();//在此处访问数据
HashMap类=新的HashMap();
//从data.studentdataget中找到的数据填充地图
用于(学生:学生){
String[]arr=student.split(;”;//将字符串拆分为每个字符串上的数组;
class.put(arr[1],arr[2]);//基于学生数据集填充地图
}
//打印地图
for(Map.Entry:classes.entrySet()){
System.out.println(entry.getKey()+“:”+entry.getValue());
}
}

我猜您需要从
Data.java
遍历
studentData
列表,并对其每个元素进行字符串拆分(为什么称之为
path
?)。不知道你在用
main
中的映射做什么(顺便说一句,Java惯例是所有类名都以大写字母开头)我不知道你想对我说什么:)。。我不知道怎样才能把它们装满。所以我不知道如何从另一个类访问数据?所以你的
studentdataget
from
data
被声明为
public
,这意味着任何其他类都可以访问它,也就是说
static
,这意味着你不需要有
data
的实例来使用这个方法(对于这样的用例来说,这是一种非常糟糕的使用模式,但对于学习来说还可以)。因此,您可以在
main
中执行以下操作:
List data=data.studentdataget();
并使用此列表。谢谢您的帮助:)是的,我现在明白了。但我已经在main中这么做了?不,我想在main.java中访问data.java:)中的列表是的,谢谢,这对我也有帮助。
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());
    }
}