【问题标题】:How can I fill up the list in to my HashMap? [duplicate]如何将列表填写到我的 HashMap 中? [复制]
【发布时间】:2020-11-19 22:28:47
【问题描述】:

首先我有三个班级:

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");

学生.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;
    }
}

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()) {
                
                
            }
        }
                
       }

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

【问题讨论】:

  • 我猜你需要从Data.java 遍历你的studentData list 并且对于它的每个元素你需要进行字符串拆分(你为什么打电话它path?)。不确定您在main 中使用该映射做什么(顺便说一句,Java 约定是所有类名都以大写字母开头)
  • 我不确定你想对我说什么 :) .. 我不知道如何才能填满它们。那么我不知道的是如何访问另一个类的数据?
  • 所以你的studentdataget 来自Data 被声明为public 这意味着任何其他类都可以访问它,还有static 这意味着你不需要@987654332 的实例@ 使用这种方法(对于这样的用例来说,这是一个非常糟糕的使用模式,但可以用于学习)。因此,您可以在 main 中执行以下操作:List&lt;String&gt; data = Data.studentdataget(); 并使用此列表。
  • 感谢帮助我:)
  • 是的,我现在明白了。

标签: java


【解决方案1】:

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

您只需在您列表的每个条目中对; 进行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());
    }
}

【讨论】:

  • 但我基本上已经这样做了?
  • 不,我想在我的 main.java 中访问 data.java 中的列表 :)
  • 是的,这也帮助了我。
猜你喜欢
  • 1970-01-01
  • 2015-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-26
相关资源
最近更新 更多