0

我正在使用以下代码将对象列表保留在 MAP 中,

 Map<String, List<Rows>> map = new HashMap<String, List<Rows>>()
 while( rs.next() ) {
      Rows row = new Rows();
      /*
       * code to initialize the values of row from the record
      */
     String category = rs.getString("Cat");
     if(!map.containsKey(category)){
         map.put(category, new ArrayList<Rows>());
     }
     map.get(category).add(row);
  }

是否可以对每个类别的值进行排序?如何删除特定类别中的项目?

4

4 回答 4

1

@Eme如果您想要按其键排序的地图,则称为SortedMap

此外,如果您想从特定类别的列表中删除其中一项,您可以执行以下操作:

List<Row> list = map.get(category);
list.remove(index of element you want to remove);
map.put(category, list);
于 2012-09-29T07:54:57.517 回答
1

移除remove()map的item使用方法:

map.remove(category)

据我了解,每个类别的项目都存储在列表中,所以排序很简单:

Collections.sort(map.get(category))

您可以使用 custom 自定义排序Comparator

编辑:

但是,如果您希望将排序到您的地图中,您必须使用SortedMap,例如TreeMap,并且可能提供知道比较您的类别的比较器。否则键将按字母顺序排序。

于 2012-09-29T07:56:18.777 回答
0

是否可以对类别中的值进行排序:使用PriorityQueue而不是列表来保持值在添加时排序。

要删除,您可以使用 map.get(category).remove(row); 或者创建一个继承自 map 并覆盖 remove(..) 的新类。您可以在此处放置代码以从附加到特定键的列表中删除,而不是从地图本身中删除。

于 2012-09-29T07:56:17.620 回答
0

使用列表将项目存储在您的类别中。还有一个 API 函数来排序列表。并使用 (map.remove(category) ).get(0) 获取您的类别列表中的第一项

于 2012-09-29T07:59:50.963 回答