HashMapArrayList(java)

HashMapArrayList(java),java,arraylist,hashmap,Java,Arraylist,Hashmap,好的,我对编程相当陌生,如果这个问题真的很简单,我很抱歉,我已经在我的哈希映射中创建了一个ArrayList,这样我就可以在哈希映射中添加多个值 我的代码看起来很好(对我来说),但在这一行“mymap.add(module,new ArrayList>());”上有一个错误,表示(或[expected] 浪费了太多的时间试图弄明白这一点,所以我想我会在这里发布。提前感谢您的帮助。另外:是的,我需要这样做,不,我不能使用guava MultiMap public class hashArray {

好的,我对编程相当陌生,如果这个问题真的很简单,我很抱歉,我已经在我的
哈希映射中创建了一个
ArrayList
,这样我就可以在哈希映射中添加多个值

我的代码看起来很好(对我来说),但在这一行“mymap.add(module,new ArrayList>());”上有一个错误,表示(或[expected]

浪费了太多的时间试图弄明白这一点,所以我想我会在这里发布。提前感谢您的帮助。另外:是的,我需要这样做,不,我不能使用
guava MultiMap

public class hashArray {
HashMap<String, ArrayList<Integer>> mymap = new HashMap<String, ArrayList<Integer>>();
public hashArray() {}
public void addEntryHR( String module, Integer result ) {
mymap.add(module, new ArrayList<Integer>>());
公共类哈希数组{
HashMap mymap=新HashMap();
公共哈希数组(){}
public void addEntryHR(字符串模块,整数结果){
添加(模块,新ArrayList>());
问题
  • 您可以在
    new ArrayList>()
    中创建一个新的
    ArrayList
    (其中还包含一个语法错误-一个
    太多),但决不向其中添加
    number
  • 您正在
    HashMap
    上调用
    add
    ,该HashMap没有此方法。对于map,它被称为
    put
提议的解决办法 请参阅下面的代码

Map<String, List<Integer>> myMap = new HashMap<>();

public void addEntryHR(String mod, Integer number) {
    List<Integer> numbers = new ArrayList<>();
    numbers.add(number);

    myMap.put(mod, numbers);
}
Map myMap=newhashmap();
public void addEntryHR(字符串模式,整数){
列表编号=新的ArrayList();
数字。添加(数字);
myMap.put(mod,number);
}
其他意见 使用接口
建议使用集合的接口而不是实现。这意味着
Map myMap
而不是
HashMap myMap
List
而不是
ArrayList


为什么要这样做?因为这样可以让您灵活地使用集合并减少维护工作量。如果您改变主意,想使用
LinkedList
而不是
ArrayList
,那么您只需将一个
new ArrayList()
更改为
new LinkedList()
而不是整个代码中使用的所有
ArrayList
变量。

您的行中有一个打字错误和一个bug:

//         The typo is right here    v
mymap.add(mod, new ArrayList<Integer>>());

您得到的错误是关于输入错误的。修复该输入错误将导致关于添加未知方法的错误。

您需要首先从映射对象中获取列表,如下所示-

ArrayList<Integer> list = mymap.get(mod);

if (list==null){
    //then create new ArrayList object and assign to list
    list=new ArrayList<Integer>();
 }
  list.add(number);  //adding new number to the list
  mymap.put(mod,list); //storing in map
ArrayList list=mymap.get(mod);
if(list==null){
//然后创建新的ArrayList对象并指定给列表
列表=新的ArrayList();
}
list.add(number);//向列表中添加新编号
mymap.put(mod,list);//存储在map中

put没有将我的条目添加到arraylist中?谢谢,我相信这是我一直在寻找的解决方案,但是有一个问题,当我将代码更改为此时,我得到以下错误:“源代码1.6中不支持菱形运算符(使用源代码7或更高版本启用菱形运算符)”-因此,我编辑了项目属性以使用source 7,我90%的代码现在看起来没有响应。有什么想法吗?谢谢。它与JDK的正确版本链接了吗?您使用的是什么IDE?没有任何适当的详细信息,我帮不上什么忙。如果问题仍然存在,我建议提出一个关于如何在IDE中使用Java 7+的新问题在解决问题之前,您可以使用
newarraylist()
newhashmap()
ArrayList<Integer> list = mymap.get(mod);

if (list==null){
    //then create new ArrayList object and assign to list
    list=new ArrayList<Integer>();
 }
  list.add(number);  //adding new number to the list
  mymap.put(mod,list); //storing in map