我想创建一个hashmap,用于存储当前存储在arraylist中的特定活动对象的标题中的关键字。例如,我将以下活动存储在数组列表中:
足球比赛 - arraylist中的第一个活动对象 - 所以这里关键字football将链接到arraylist中的第一个活动对象,而单词game将链接到arraylist中的第一个活动对象。
棒球比赛 - arraylist中的第二个活动对象 - 所以这里的关键字baseball将链接到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);
答案 0 :(得分:1)
您的Key
和Value
类型似乎已被撤消,Map
Javadoc开始,
<强>
Interface Map<K,V>
强>Type Parameters: K - the type of keys maintained by this map V - the type of mapped values
,您需要超过一个ArrayList
参考!假设您有String key
和Activity act
,首先检查Map.containsKey(Object)
是否有key
,如果它确实使用了List
,则另外构建一个新的map
并添加它到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);
。
{{1}}
答案 1 :(得分:1)
“游戏”之类的关键字不能有多个值,因为它的功能是从String到Number。我想你可以做到这一点。您有一系列活动以及从String到List的Map,用于保存该String的活动编号。例如,地图将具有以下值:
当你必须添加新活动时,你应该更新你的地图,例如添加“棒球类”会将棒球列表从[2]更改为[2,4]并创建具有值[4]的新“类”