小编Muk*_*esh的帖子

使用Java 8流运算符将两个级别映射的列表简化为单个两个级别映射

我有一个嵌套地图列表(List<Map<String, Map<String, Long>>>),目标是将列表缩小为一张地图,合并操作如下:如果map1contains x->{y->10, z->20}map2contains x->{y->20, z->20}则应将这两个合并到x->{y->30, z->40}

我尝试按照以下步骤进行操作,并且效果很好。

import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.function.BinaryOperator;
import java.util.stream.Collectors;

public class Test {
    public static void main(String args[]) throws IOException {
        Map<String, Map<String, Long>> data1 = new HashMap<>();
        Map<String, Long> innerData1 = new HashMap<>();
        innerData1.put("a", 10L);
        innerData1.put("b", 20L);
        data1.put("x", innerData1);
        Map<String, Long> innerData2 = new HashMap<>();
        innerData2.put("b", 20L);
        innerData2.put("a", 10L);
        data1.put("x", innerData1);

        Map<String, Map<String, …
Run Code Online (Sandbox Code Playgroud)

java lambda java-8 java-stream

5
推荐指数
1
解决办法
963
查看次数

C++从const int*转换为int*处理意外结果

在c ++中,我们知道我们不能将const int*转换为int*.但我有一个代码片段,我可以将const int*转换为int*.我是c ++的初学者,我用谷歌搜索了这个,但我只是提到const int*的链接无法转换为int*以避免const违规.我无法弄清楚为什么编译没有错误

#include <iostream>
using namespace std;

int main(void)
{
    const int a1 = 40;
    const int* b1 = &a1;
    int* c1 = (int *)(b1);
    *c1 = 43;
    cout<< c1<<" "<< &a1<<endl;
    cout<< *c1<<" "<< a1<<endl;
 }
Run Code Online (Sandbox Code Playgroud)

另外,问题是上述程序的输出是:

0x7fff5476db8c 0x7fff5476db8c
43 40
Run Code Online (Sandbox Code Playgroud)

有人可以解释c1整数指针指向a1的相同地址但分别具有不同的值43和40.

c++ pointers const type-conversion

4
推荐指数
1
解决办法
1341
查看次数

标签 统计

c++ ×1

const ×1

java ×1

java-8 ×1

java-stream ×1

lambda ×1

pointers ×1

type-conversion ×1