Java 如何将列表填入HashMap?
首先,我有三门课: Data.java: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
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()
是
你只是在在yout列表的每个条目中添加code>,以将它们拆分为[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
fromdata
被声明为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());
}
}