Java - Arraylist / Hash地图Questiоn

时间:2014-11-07 17:48:13

标签: java arraylist

我想创建一个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);

2 个答案:

答案 0 :(得分:1)

您的KeyValue类型似乎已被撤消,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 keyActivity 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的活动编号。例如,地图将具有以下值:

  • “游戏” - &gt; [1,2]
  • “足球” - &gt; [1]
  • “棒球” - &gt; [2]
  • “晚餐” - &gt; [3]

当你必须添加新活动时,你应该更新你的地图,例如添加“棒球类”会将棒球列表从[2]更改为[2,4]并创建具有值[4]的新“类”

  • “游戏” - &gt; [1,2]
  • “足球” - &gt; [1]
  • “棒球” - &gt; [2,4]
  • “晚餐” - &gt; [3]
  • “Class” - &gt; [4]