我使用以下代码保留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);
}
是否可以对每个类别的值进行排序? 如何删除特定类别中的项目?
答案 0 :(得分:1)
@Eme如果您想要一个按其键排序的地图,则称为SortedMap。
此外,如果您要从列表中删除某个特定类别的项目之一,您可以执行以下操作:
List<Row> list = map.get(category);
list.remove(index of element you want to remove);
map.put(category, list);
答案 1 :(得分:1)
要删除项目使用remove()
地图方法:
map.remove(category)
据我所知,每个类别的项目都存储在列表中,因此排序很简单:
Collections.sort(map.get(category))
您可以使用自定义Comparator
自定义排序。
编辑:
如果您希望将键排序到地图中,则必须使用SortedMap
,例如TreeMap
并且可能会提供比较您比较类别的比较器。否则,密钥将按字母顺序排序。
答案 2 :(得分:0)
是否可以对类别中的值进行排序: 使用PriorityQueue代替list,可以在添加值时对值进行排序。
要删除,您可以使用map.get(category).remove(row);或者创建一个继承自map和覆盖的新类remove(..)。您可以在此处放置代码以从附加到特定键的列表中删除,而不是从地图本身中删除。
答案 3 :(得分:0)
使用列表存储您的类别中的项目。有一个API函数来排序列表。并使用(map.remove(category))。get(0)获取你的类别列表中的第一项