小编Har*_*ish的帖子

Spring MongoTemplate - 将聚合结果映射到集合(例如List和Map)

aggregateMongoTemplate返回的方法AggregationResults<T>,其中T是与mongo集合对应的类.

有时,我们只需要该集合中的单个(例如属性abc)或几个属性(pqrxyz),具体取决于特定条件.在这些情况下,我们可以将整个集合检索到T类中,也可以创建一个包含properties(abc)或(pqr,xyz)的新类.

有没有办法将这些单个属性映射到List<String>两个属性作为键值对HashMap<String, String>

java spring spring-mvc mongodb mongotemplate

7
推荐指数
1
解决办法
3496
查看次数

这是对java中字符串immutablity的妥协吗?

我们所有人都知道String在java中是不可变的 - 一旦创建了字符串,就无法更改内容.


String使用字符数组char[] value来存储字符串内容,这里是java代码 -

/** The value is used for character storage. */
    private final char value[];
Run Code Online (Sandbox Code Playgroud)

如果我们可以访问该字段values[]并进行更改,该怎么办?看到这段代码 -

            String name = "Harish";
            System.out.println(name); // Harish           
            Field field = name.getClass().getDeclaredField("value");
            field.setAccessible(true);
            char[] value = (char[]) field.get(name);
            value[0] = 'G';
            value[1] = 'i';
            System.out.println(Arrays.toString(value)); // [G, i, r, i, s, h]
            System.out.println(name); // Girish
Run Code Online (Sandbox Code Playgroud)

这样,我认为,我们可以改变字符串的内容,这违反了字符串不变性原则.

我错过了什么吗?

java string immutability string-pool

3
推荐指数
1
解决办法
102
查看次数

使用流 API 将数字列表拆分为两个单独的奇数和偶数列表

我正在学习Java8,想要使用Java8中的流API执行以下操作。

输入: (1,2,3,4,5,6,7,8,9) 列表

输出: 奇数列表 - (1,3,5,7,9) 偶数列表 - (2,4,6,8)

我可以在传统java中的单个for循环中执行此操作,例如

List<Integer> ints = Arrays.asList(3,4,2,5,6,7,4,5);
List<Integer> oddList = new ArrayList<>();
List<Integer> evenList = new ArrayList<>();

for (Integer i : ints) {
    if (i % 2 == 0) {
        evenList.add(i);
    } else {
        oddList.add(i);
    }
}
Run Code Online (Sandbox Code Playgroud)

我知道一种以 Java8 风格执行此操作的方法,如下所示 -

List<Integer> evens = ints.stream().filter(i -> i % 2 == 0).collect(Collectors.toList());
List<Integer> odds = ints.stream().filter(i -> i % 2 == 1).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

但这里的问题是我迭代了两次而不是一次整数。有没有一种方法可以做到这一点而无需在流中迭代两次?

java java-8 java-stream

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