假设我有三个对象保存到数据库并将db生成的ID设置为。我不知道方法var mouseIsMoving,
// time (ms) after mouse stoped moving to set the flag back to false;
mouseMoveTime = 500;
window.addEventListener('mousemove', ()=>{
clearTimeout(mouseIsMoving);
mouseIsMoving = setTimeout(()=>{ mouseIsMoving = false }, mouseMoveTime);
});
/////////////////////////////////////////////////////
// fire some function every 500ms
setInterval(someFunc, 500);
function someFunc(){
// do whatever ONLY when the mouse is not moving
if( !mouseIsMoving )
console.log( new Date().toLocaleTimeString() )
}
返回的对象的顺序。但是我想对这些生成的ID进行测试。我如何在流中做到这一点?我想做这样的事情:
saveToDb
但我不确定我的List<MyObject> myObjects = getObjects();
numRecords = saveToDb(myObjects); // numRecords=3
List<Integer> intArray = Arrays.asList(1, 2, 3);
intArray.stream()
.forEach(it -> myObjects.stream()
.filter(it2 -> it2.getId().equals(it))
.????
会在这样的声明中出现在哪里。或者我的方法都错了?我知道我可以使用简单的for循环,但我喜欢流的优雅。另外,有没有办法动态创建intArray,以防我有超过3个myObjects?
答案 0 :(得分:2)
似乎(如果我理解正确的话),这样的事情怎么样:
boolean result = Arrays.asList(1, 2, 3).stream()
.allMatch(i -> objects
.stream()
.map(MyObject::getId)
.filter(j -> j == i).findAny().isPresent());
Assert.assertTrue(result);
答案 1 :(得分:0)
所以你基本上想检查是否为MyObject实例分配了一个ID? 是否与任何重要性中的数组中的ID相等?
如果不是:
List<MyObject> objects = getObjects();
saveToDb(objects);
objects.stream().map(MyObject::getId).forEach(Assert::assertNotNull);
假设MyObject上有一个“getId”方法。
答案 2 :(得分:0)
为您的其他问题提供一点补充:
此外,有没有办法动态创建intArray,以防我有超过3个myObjects?
是的,您可以使用IntStream
根据对象的大小创建流,例如:
IntStream.rangeClosed(1, objects.size()) // both start and end inclusive
还有IntStream.range(int start, int end)
end
独有的方法{/ 1}。