Java 如何对地图项目进行排序并删除一个?
我使用以下代码在地图中保留对象列表Java 如何对地图项目进行排序并删除一个?,java,object,map,hashmap,Java,Object,Map,Hashmap,我使用以下代码在地图中保留对象列表 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
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);
}
Map Map=newhashmap()
while(rs.next()){
行=新行();
/*
*用于初始化记录中行的值的代码
*/
字符串类别=rs.getString(“Cat”);
如果(!map.containsKey(类别)){
put(category,newarraylist());
}
map.get(category).add(row);
}
是否可以对每个类别的值进行排序?
如何删除特定类别中的项目?@Eme如果您想要一个按其键排序的映射,则称之为 此外,如果要从特定类别的列表中删除其中一项,可以执行以下操作:
List<Row> list = map.get(category);
list.remove(index of element you want to remove);
map.put(category, list);
List List=map.get(类别);
list.remove(要删除的元素的索引);
地图放置(类别、列表);
是否可以对类别中的值进行排序:
使用“而不是列表”可以在添加值时对其进行排序
要删除,可以使用map.get(category).remove(row);或者创建一个从map继承并覆盖remove(..)的新类。您可以在此处放置代码以从附加到特定键的列表中删除,而不是从映射本身中删除。要删除项,请使用
remove()
映射方法:
map.删除(类别)
据我所知,每个类别的项目都存储在列表中,因此排序很简单:
Collections.sort(map.get(category))
您可以使用自定义的比较器
自定义排序
编辑:
但是,如果您希望将键排序到地图中,则必须使用
SortedMap
,例如TreeMap
,并可能提供知道比较类别的比较器。否则键将按字母顺序排序。使用列表将项目存储在您的类别中。有一个API函数来对列表进行排序。并使用(map.remove(category)).get(0)获取类别列表中的第一项是否要对每个类别的值ArrayList进行排序,对吗?这就是为什么在上一篇文章中我要求您使用map of map的原因