gpt4 book ai didi

java - 从 HashMap 返回 ArrayList

转载 作者:行者123 更新时间:2023-12-01 19:31:15 26 4
gpt4 key购买 nike

我有一个程序,将捐赠者的姓名添加为 HashMap 中的键,并将其城市(城市的 ArrayList)作为值。因此,我必须获取捐赠者的姓名,然后首先检查该名称在 map 中是否可用,如果该名称可用并且捐赠者从不同的城市捐赠,那么我需要更新 map 中的城市数组列表如果是新的捐赠者,那么我只需在 map 中添加捐赠者即可。

如果有人能帮助我解决这个问题,我因此面临着巨大的危机。完全卡住了。

我已附上我的代码。

import java.util.Scanner;
import java.util.ArrayList;
import java.util.HashMap;

public class MultCityMain {

public static void main(String[] args) {
// TODO Auto-generated method stub
CollectionUtil cu = new CollectionUtil();
String donorName,city;
Scanner sc = new Scanner(System.in);
ArrayList<String> donorCity = new ArrayList<String>();
boolean choiceFlag = true;
while(choiceFlag){
System.out.println("Enter name");
donorName = sc.nextLine();
System.out.println("Enter city name");
city = sc.nextLine();
ArrayList<String> newCity = cu.nameKeyChecker(donorName,donorCity);
newCity.add(city);
cu.addDonor(donorName, newCity);
System.out.println("donate again? (1/0)");
int choice = sc.nextInt(); sc.nextLine();
if(choice == 1)
choiceFlag = true;
else
choiceFlag = false;
}
System.out.println(CollectionUtil.donorMap);


}
}
import java.util.ArrayList;
import java.util.HashMap;


public class CollectionUtil {

static HashMap<String, ArrayList<String>> donorMap = new HashMap<>();

public ArrayList<String> nameKeyChecker(String name, ArrayList<String> city){
if(donorMap.containsKey(name))
return (ArrayList<String>)donorMap.get(name);
else
donorMap.put(name, city);
return (ArrayList<String>)donorMap.get(name);

}

public void addDonor(String name, ArrayList<String> city){

donorMap.put(name, city);

}

}

最佳答案

您使这种方式变得比实际需要的更加复杂。

给定:Map<String, List<String>> donors;用捐赠城市列表代表捐赠者的姓名,添加新城市所需要做的就是:

donors.computeIfAbsent(donorName, d -> new ArrayList<String>()).add(newCity);

此代码将获取现有列表,但是,如果没有列表,它会首先“计算”一个值(通过创建一个新列表)。然后,返回该列表(无论是新计算的列表还是现有的列表);所以你只需添加新城市即可。

瞧。您现在可以删除一半的代码;你不需要 util 类(一般来说,如果你将一个类命名为“util”,请重新考虑一下),不需要 nameKeyChecker,你不需要 donorCity这里也有变量。

关于java - 从 HashMap 返回 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59716727/

26 4 0