Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-Arraylist/Hash-map-Questiо;N_Java_Arraylist - Fatal编程技术网

Java-Arraylist/Hash-map-Questiо;N

Java-Arraylist/Hash-map-Questiо;N,java,arraylist,Java,Arraylist,我想创建一个hashmap,用于存储当前存储在arraylist中的特定活动对象标题中的关键字。例如,我在数组列表中存储了以下活动: Football game-arraylist中的第一个活动对象--因此这里的关键字Football将链接到arraylist中的第一个活动对象,而单词game将链接到arraylist中的第一个活动对象 棒球比赛-arraylist中的第二个活动对象-因此,这里的关键字棒球将链接到arraylist中的第一个活动对象,单词game现在将链接到arraylist中

我想创建一个hashmap,用于存储当前存储在arraylist中的特定活动对象标题中的关键字。例如,我在数组列表中存储了以下活动:

Football game-arraylist中的第一个活动对象--因此这里的关键字Football将链接到arraylist中的第一个活动对象,而单词game将链接到arraylist中的第一个活动对象

棒球比赛-arraylist中的第二个活动对象-因此,这里的关键字棒球将链接到arraylist中的第一个活动对象,单词game现在将链接到arraylist中的第二个活动对象和

晚餐-arraylist中的第三个活动对象

当用户使用关键字“game”进行搜索时,我希望hashmap在arraylist中链接1和2,因为它们都有单词game。我不确定我是否在下面做这件事。这样做吗

private ArrayList activities = new ArrayList();

HashMap<ArrayList<Activity>, String> map = new HashMap<>();

map.put(new ArrayList<Activity>(),keyword );


There will be a loop here to add keywords from a tokenized string into activities. 

map.get(activities(i)).add(keyword);
private ArrayList activities=new ArrayList();
HashMap=newHashMap();
put(新的ArrayList(),关键字);
这里将有一个循环将关键字从标记化字符串添加到活动中。
map.get(活动(i)).add(关键字);

您的
类型出现反转,开始

接口图

Type Parameters:
   K - the type of keys maintained by this map
   V - the type of mapped values
而且,您将需要不止一个
ArrayList
reference!假设您有一个
字符串键
和一个
活动动作
,您将首先检查
键是否使用该
列表
,否则构建一个新键并将其添加到
映射

String key;
Activity act;
Map<String, List<Activity>> map = new HashMap<>();
List<Activity> list = null;
if (map.containsKey(key)) {
  list = map.get(key);
} else {
  list = new ArrayList<>();
  map.put(key, list);
}
list.add(act);
字符串键;
活动法;
Map Map=newhashmap();
List=null;
if(地图容器(图例)){
list=map.get(key);
}否则{
列表=新的ArrayList();
地图。放置(键、列表);
}
增加(法案);

像“game”这样的关键字不能有多个值,因为它是从字符串到数字的函数。我想你能做到。您有一个活动数组和一个从字符串到保存该字符串的活动编号的列表的映射。对于您的示例,贴图将具有以下值:

  • “游戏”->[1,2]
  • “足球”->[1]
  • “棒球”->[2]
  • “晚餐”->[3]
当您必须添加新活动时,您应该更新地图,例如,添加“棒球类”将把棒球列表从[2]更改为[2,4],并将创建具有值[4]的新“类”

  • “游戏”->[1,2]
  • “足球”->[1]
  • “棒球”->[2,4]
  • “晚餐”->[3]
  • “类别”->[4]

如果您不知道如何使用某个类,请先阅读它的JavaDoc。例如,您当前的映射:
HashMap.Or简言之::D.您能告诉我您在代码的if部分做什么吗?@user4188409首先检查
Map.containsKey(Object)
是否使用该列表,否则构建一个新的列表并将其添加到映射中。