使用Java 8 u151
我们有以下几种:
Collections.sort(srs, (sr1, sr2) -> sr1.getValidStartTime().compareTo(sr2.getValidEndTime()));
Run Code Online (Sandbox Code Playgroud)
其中getValidStartTime和getValidEndTime是Date对象.
显然这段代码是错误的,因为我们的目标实际上是根据开始时间进行排序.
然而,不幸的是,导致该问题的数据已从数据库中删除,我们得到了臭名昭着的IllegalArgumentException.这似乎是合乎逻辑的,因为在元素之间,我们没有使用相同的值进行比较(A.start与B.end进行比较,但B.start与C.end进行比较).
我不能做的是弄清楚导致再次抛出此异常的数据集.修复代码以始终比较开始时间是正确的方法,但是对于数据集之前和之后的测试,我无法显示修复的证据(即使每个人都已经同意我们正在进行更改).
试着看看TimSort的mergeHi方法,但是我不能完全遵循所有的疾驰和数组副本.因此,虽然我可以告诉异常抛出的位置,但是它可以重现它已经失败了.
并且Date对象在排序之间是静态的.一旦在数据库中设置,它们就是不可变的.列表本身也没有改变.所以对我来说,我可能是错的,这指向数据并且我们有一些奇怪的开始和结束日期的组合违反了传递条款,但我尝试的每个组合总是带有效(如果不是有点奇怪)排序.
谢谢!
Codesandbox 链接https://codesandbox.io/s/mjxrz2npzy
我正在创建一个应用程序,用户可以在其中单击“添加计时器”按钮来创建数量有限的自定义倒计时/倒计时计时器,这些计时器在组件 CustomTimerRow 中定义。每行都有一个图标,如果他们点击它,它将删除计时器。
我有以下包含行列表的父组件:
import React, { Component } from 'react';
import {connect} from 'react-redux';
import CustomTimerRow from './CustomTimerRow';
import AddRow from './AddRow';
const mapStateToProps = state => {
return {customTimers:state.clock.customTimers}
};
class ConnectedCustomTimers extends Component
{
constructor(props)
{
super(props);
this.buildCustomTimers = this.buildCustomTimers.bind(this);
}
buildCustomTimers()
{
let timerList = [];
let index = 0;
if(this.props.customTimers)
{
for(let t of this.props.customTimers)
{
timerList.push(<CustomTimerRow number={index++} timer={t}/>)
}
}
return timerList;
}
render()
{
const elems = this.buildCustomTimers();
const addRow …Run Code Online (Sandbox Code Playgroud)