Map<List<Node>,Map<Double,LinkedList<Node>>>对于该集合如何实现依据double降序存储
时间: 2023-11-11 18:48:24 浏览: 35
要实现对于Map<Double,LinkedList<Node>>按照double降序存储,可以使用TreeMap来代替Map。TreeMap是一个有序的键值对集合,它根据键的自然顺序进行排序,或者使用自定义的Comparator进行排序。
在这种情况下,可以使用TreeMap<Double,LinkedList<Node>>来存储数据。当插入数据时,可以通过传入一个自定义的Comparator来实现按照double降序排序。
以下是示例代码:
```java
Map<List<Node>, TreeMap<Double, LinkedList<Node>>> map = new HashMap<>();
Comparator<Double> descendingOrder = (a, b) -> Double.compare(b, a);
TreeMap<Double, LinkedList<Node>> treeMap = new TreeMap<>(descendingOrder);
// 向treeMap中插入数据
treeMap.put(1.5, new LinkedList<>());
treeMap.put(3.2, new LinkedList<>());
treeMap.put(2.7, new LinkedList<>());
// 将treeMap放入map中
map.put(new ArrayList<>(), treeMap);
```
这样,map中的treeMap将会按照double降序存储。
相关问题
Map<String, List<T>>转成 List<String, List<T>>
可以使用Java 8的Stream API来完成这个转换。
假设原始的Map为Map<String, List<T>>,可以使用以下代码将其转换为List<String, List<T>>:
```java
List<String> keys = new ArrayList<>(map.keySet());
List<List<T>> values = new ArrayList<>(map.values());
List<String, List<T>> result = IntStream.range(0, keys.size())
.mapToObj(i -> new AbstractMap.SimpleEntry<>(keys.get(i), values.get(i)))
.collect(Collectors.toList());
```
首先获取所有的键和值,并分别存储在List中。然后使用IntStream.range方法生成一个IntStream,它的元素为0到keys.size()-1。对于IntStream中的每个元素i,使用AbstractMap.SimpleEntry将第i个键和值组成一个键值对,并将它们收集到List中,最终得到List<String, List<T>>类型的结果。
需要注意的是,这种转换方式可能会丢失原始Map中的顺序,因为List没有保证元素的顺序。如果需要保留顺序,可以考虑使用LinkedHashMap和LinkedList来替代HashMap和ArrayList。
list<entity>转list<map>
要将List<Entity>转化为List<Map<Object, Object>>,可以使用以下方法:
1. 首先,我们需要创建一个空的List<Map<Object, Object>>来存储转化后的结果。
2. 然后,我们遍历原始的List<Entity>中的每个实体对象。
3. 对于每个实体对象,我们需要创建一个空的Map<Object, Object>来存储转化后的键值对。
4. 我们使用反射获取实体对象的所有get方法,并遍历每个get方法。
5. 对于以"get"开头的方法名,我们将其截取后面的属性名,并将首字母转为小写,用作Map中的键。
6. 使用反射调用get方法获取实体对象中对应属性的值。
7. 如果属性的返回类型是java.util.Date,并且值不为null,则将日期格式化为指定的格式(比如"yyyy-MM-dd HH:mm:ss")。
8. 将属性名作为键,属性值作为值,存入Map中。
9. 将转化后的Map添加到结果的List中。
10. 最后返回转化后的List<Map<Object, Object>>。
下面是一个示例的代码实现,用于将List<Entity>转化为List<Map<Object, Object>>:
```
public static <T extends IdEntity> List<Map<Object, Object>> EntityConvertMap(List<T> list) {
List<Map<Object, Object>> result = new LinkedList<>();
try {
for (T entity : list) {
Map<Object, Object> map = new HashMap<>();
Method[] methods = entity.getClass().getMethods();
for (Method method : methods) {
if (method.getName().startsWith("get")) {
String name = method.getName().substring(3);
name = name.substring(0, 1).toLowerCase() + name.substring(1);
Object value = method.invoke(entity);
if (method.getGenericReturnType().toString().equals("class java.util.Date") && value != null) {
value = getNow((Date) value, "yyyy-MM-dd HH:mm:ss");
}
map.put(name, value);
}
}
result.add(map);
}
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
```
这样,你就可以使用该方法将List<Entity>转化为List<Map<Object, Object>>了。<span class="em">1</span><span class="em">2</span>