小编jau*_*udo的帖子

Java 8流 - 合并共享相同Id的对象集合

我有一系列发票:

class Invoice {
  int month;
  BigDecimal amount
}
Run Code Online (Sandbox Code Playgroud)

我想合并这些发票,因此我每月收到一张发票​​,金额是本月发票金额的总和.

例如:

invoice 1 : {month:1,amount:1000}
invoice 2 : {month:1,amount:300}
invoice 3 : {month:2,amount:2000}
Run Code Online (Sandbox Code Playgroud)

输出:

invoice 1 : {month:1,amount:1300}
invoice 2 : {month:2,amount:2000}
Run Code Online (Sandbox Code Playgroud)

我怎么能用java 8流做到这一点?

编辑:因为我的Invoice类是可变的,修改它们不是问题,我选择了Eugene的解决方案

Collection<Invoice>  invoices = list.collect(Collectors.toMap(Invoice::getMonth, Function.identity(), (left, right) -> {
                left.setAmount(left.getAmount().add(right.getAmount()));
                return left;
            })).values();
Run Code Online (Sandbox Code Playgroud)

java java-stream

10
推荐指数
2
解决办法
7520
查看次数

vue-class-component :如何创建和初始化反射数据

我将 vuejs 与 typescript 和 vue-class-component 一起使用。我正在尝试使用反应数据创建自定义组件。

这是我的代码:

<template>
    <div>
        <input v-model="data.name" placeholder="Name">
        <input v-model="data.value" placeholder="Value">
    </div>
</template>

<script lang="ts">
import { Component, Vue } from 'vue-property-decorator';

interface Model {
    name: string;
    value: number;
}
@Component
export default class ClubVue extends Vue {
    private data: Model;

    public mounted() {
        this.data = {...this.$store.getters.data};
    }
}
</script>
Run Code Online (Sandbox Code Playgroud)

在第一个版本中,我遇到了这个错误:

属性或方法“数据”未在实例上定义,但在渲染期间被引用

这是正常的,正如在 vue-class-component 页面中所说,未定义的数据不会被反射。我需要将数据初始化为空。此外,我收到此打字稿错误:

属性“数据”没有初始值设定项,并且未在构造函数中明确分配

所以我想这样做:

private data: Model = null;
Run Code Online (Sandbox Code Playgroud)

但是我收到了这个打字稿错误:

类型 'null' 不能分配给类型 'Model'。

我不想将数据类型更改为 ,Model | null因为我必须在任何地方检查数据是否为空,而且我知道数据永远不会为空。

private data!: …
Run Code Online (Sandbox Code Playgroud)

typescript vue.js vue-class-components

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

查找 vue-test-utils 中的第 n 个元素

我正在使用 vue-test-utils 和 jest。\n我的包装器包含 9 个输入元素,我想获取第三个。\n此解决方案有效:

\n\n
    wrapper.findAll(\'input\').at(3) // OK\n
Run Code Online (Sandbox Code Playgroud)\n\n

根据文档(https://vue-test-utils.vuejs.org/api/selectors.html),我应该能够使用CSS伪选择器,但这不起作用:

\n\n
    wrapper.find(\'input:nth-of-type(3)\') // ErrorWrapper\n
Run Code Online (Sandbox Code Playgroud)\n\n

使用这种方法,我只能获取第一个输入:

\n\n
    wrapper.find(\'input:nth-of-type(1)\') // OK\n
Run Code Online (Sandbox Code Playgroud)\n\n

我是否误用了 CSS 选择器?

\n\n

我的包装 HTML 如下所示:

\n\n
    wrapper.findAll(\'input\').at(3) // OK\n
Run Code Online (Sandbox Code Playgroud)\n

css vue.js jestjs vue-test-utils

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

使用反射比较不同类的对象

我有两个具有完全相同属性的对象.不要问我为什么,这是生成的代码,我必须处理这个.

class Bean1 {
   int id;
}

class Bean2 {
   int id;
}
Run Code Online (Sandbox Code Playgroud)

我想比较每个类的对象而不编写每个属性的比较代码.这个线程解释了如何比较两个对象,但在我的情况下,这会失败,因为它们不是同一个类的实例.

此代码返回false:

EqualsBuilder.reflectionEquals(new Bean1(1), new Bean2(1));
Run Code Online (Sandbox Code Playgroud)

有没有其他方法来comapre对象和忽略对象类?

java reflection

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

使用 v-slot prop 对模板进行条件化

我正在尝试制定一个条件来启用命名插槽,如下所示:

<template v-slot:item="{ item }" v-if="item.loading">
  <v-progress-circular indeterminate color="primary"></v-progress-circular>
</template>
Run Code Online (Sandbox Code Playgroud)

我的用例是 Vuetify 数据表:每个项目都有一个“正在加载”属性,并且我想仅在加载行时激活“项目”插槽(“项目”插槽是用于替换行的默认渲染的插槽)

错误是item在 中未定义v-if,这似乎是逻辑: item 仅为template子标签定义。

有办法解决这个问题吗?

vue.js vuejs2 vuetify.js

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

为什么这种转换无效?

我想使用带有各种列表的地图作为值:

Map<String, List<Integer>> ml;
Map<String, ?> ml2 = ml; // OK
Map<String, List<?>> ml3 = ml; // Type mismatch
Run Code Online (Sandbox Code Playgroud)

为什么最后一行无效?

java

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

Chart.js xAxis线性比例:奇怪的行为

我想在我的chart.js图表​​中使用x轴上的线性刻度.我添加一些代码因为stackoverflow在添加jsfiddle url时必须使用,但我没有看到这一点:

var options={
    scales:{
    xAxes:[{ type: "linear"}]
  }
};
Run Code Online (Sandbox Code Playgroud)

我得到一张非常奇怪的图表(第二张):http://jsfiddle.net/t0krmau8/

在第一张图表中,我希望在2到4之间获得更多空间(2到2倍于1和2之间),这就是我使用线性刻度的原因.

我使用线性刻度错了吗?或者我应该使用其他东西?

谢谢

javascript chart.js

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

UI Bootstrap Datepicker 弹出日期格式

我正在使用 UI Bootstrap Datepicker 弹出窗口,并且我想使用自定义日期格式。我的休息服务以“dd/MM/yyyy”格式向我发送日期。我想使用这种格式,但在更改模型值时,日期选择器不会更新。我定义了uib-datepicker-popup="dd/MM/yyyy"但似乎不起作用。

笨蛋:https://plnkr.co/edit/SfSXmeL0ue0yef1yTKMO? p=preview

angular.module('ui.bootstrap.demo', ['ngAnimate', 'ngSanitize', 'ui.bootstrap']);
angular.module('ui.bootstrap.demo').controller('DatepickerPopupDemoCtrl', function ($scope) {
  $scope.today = function() {
    $scope.dt = '02/01/2017';
  };

  $scope.clear = function() {
    $scope.dt = null;
  };

  $scope.dateOptions = {
    formatYear: 'yy',
    startingDay: 1
  };

  $scope.open1 = function() {
    $scope.popup1.opened = true;
  };

  $scope.popup1 = {
    opened: false
  };
});
Run Code Online (Sandbox Code Playgroud)
<!doctype html>
<html ng-app="ui.bootstrap.demo">
  <head>
    <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.6.1/angular.js"></script>
    <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.6.1/angular-animate.js"></script>
    <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.6.1/angular-sanitize.js"></script>
    <script src="//angular-ui.github.io/bootstrap/ui-bootstrap-tpls-2.5.0.js"></script>
    <script src="example.js"></script>
    <link href="//netdna.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
  </head>
  <body>

<style>
  .full button …
Run Code Online (Sandbox Code Playgroud)

javascript angularjs angular-ui-bootstrap

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

从 jpeg 中删除文本

我有一个包含 alpha 混合文本的 jpeg。知道字体和大小后,我推导出一个代表文本的 png 文件

有水印的小猫 水印

使用 ImageMagick,我可以获得原始图片的近似值吗?

alpha imagemagick image-processing

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