gpt4 book ai didi

java - 使用 ArrayList 创建 HashMap

转载 作者:行者123 更新时间:2023-12-01 18:50:27 24 4
gpt4 key购买 nike

我正在制作一个项目经理程序(一个非常简单的程序)。基本上有同事和他们的任务。现在,我做了以下结构:我使用 HashMap 键作为 CoWorkers 的名称,值始终是 CoWorkers ArryList,其中包含他或她的工作当然。

我的问题是我可以创建这个结构,但是当我尝试添加一个 ArrayList 之一的任务时,我总是得到 null 作为返回值。

这是我的代码片段:

HashMap<String, ArrayList<String>> jobs = new HashMap<String, ArrayList<String>>();

public void createJobs(){
nameReader();
for(String name:names){
File f = new File(name+"_job.txt");
if(f.exists()){
jobs.put(name, jobReader(name));
}
}
Set set = jobs.entrySet();
Iterator i = set.iterator();
while(i.hasNext()) {
Map.Entry me = (Map.Entry)i.next();
System.out.print(me.getKey() + ": ");
System.out.println(me.getValue());
}
}

在控制台上执行此方法后,我看到以下结果:

George: [do the laundry]

所以我认为我做的一切都正确。

但是然后:

public void addJob(String name, String job){
try{
List<String> itemsList = jobs.get(name);
itemsList.add(job);
}catch(Exception ex){
System.err.println(ex.getMessage() + jobs.get(name) +name);
}
}

我正在调用这个方法:

addjob("George","Clean up your room!");

控制台上的结果将是:

nullnullGeorge

更新

public ArrayList jobReader(String name){
ArrayList<String> tasks = new ArrayList<String>();
try{
Scanner s = new Scanner(new File(name+"_job.txt"));
while (s.hasNext()){
tasks.add(s.next());
}
s.close();
}catch(IOException ioe){
System.err.println("IOException: " + ioe.getMessage());
}
return tasks;
}

更新2

这是我的漏洞代码:

public class CoWorkers {
HashMap<String, ArrayList<String>> jobs = new HashMap<String, ArrayList<String>>();
ArrayList<String> names = new ArrayList<String>();

public void createJobs(){
nameReader();
for(String name:names){
File f = new File(name+"_job.txt");
if(f.exists()){
jobs.put(name, jobReader(name));
}
}
Set set = jobs.entrySet();
Iterator i = set.iterator();
while(i.hasNext()) {
Map.Entry me = (Map.Entry)i.next();
System.out.print(me.getKey() + ": ");
System.out.println(me.getValue());
}
}

public void addName(String name){
try{
String filename= "Names.txt";
FileWriter fw = new FileWriter(filename,true);
fw.write(name+"\n");
fw.close();
}
catch(IOException ioe){
System.err.println("IOException: " + ioe.getMessage());
}
}

public void addJob(String name, String job){
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date date = new Date();
try{
List<String> itemsList = jobs.get(name);
itemsList.add(job);
}catch(Exception ex){
ex.printStackTrace();
}
}

public ArrayList jobReader(String name){
ArrayList<String> tasks = new ArrayList<String>();
try{
Scanner s = new Scanner(new File(name+"_job.txt"));
while (s.hasNext()){
tasks.add(s.next());
}
s.close();
}catch(IOException ioe){
System.err.println("IOException: " + ioe.getMessage());
}
return tasks;
}

public void nameReader(){
names.clear();
try{
Scanner s = new Scanner(new File("Names.txt"));
while (s.hasNext()){
names.add(s.next());
}
s.close();
}catch(IOException ioe){
System.err.println("IOException: " + ioe.getMessage());
}
}
public static void main(String[] args) {
CoWorkers project = new CoWorkers();
project.createJobs();
project.addJob("George","Do the laundry");
}
}

最佳答案

查看代码 ex.getMessage() + jobs.get(name) +name ,当控制台打印 nullnullGeorge 时,您一定遇到了空指针异常这意味着 List itemsList = jobs.get(name);//这是 null,因此是 list 。将 null 添加到 List 会给你空指针异常。这意味着在 Map 中添加 George 时,没有发生。

关于java - 使用 ArrayList 创建 HashMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16043177/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com