场景是我有一个类,如下所示,
@Data
class Operation
{
private String id;
private String name;
private String description;
}
以及包含大量操作示例的arraylist。
例如,arraylist中有5个示例,
{"id":"0001", "name":"up"}
{"id":"0002", "name":"down"}
{"id":"0003", "name":"left"}
{"id":"0004", "name":"left"}
{"id":"0005", "name":"up"}
我想知道arraylist中的名称更改了多少次,在这种情况下,第二个名称是down,它与第一个名称不同,更改次数是1,第三个名称与第二个名称也不同,那么更改次数是2,但是第四个名称与第三个名称相同,所以更改次数仍然是2,第五个与第四个不同,因此此arraylist的更改时间为3。
有没有不遍历arraylist的方法来计算它?
3条答案
按热度按时间2eafrhcq1#
当您对exmaple使用if(setevent(index,object))时,您可以从该事件生成if(object==“meow”)return true;返回false;如果是真的,它会被设定,如果不是。
可以使用抽象类添加事件(侦听器)
628mspwn2#
输出为:
计数是3
它确实横穿了整个名单。
为了一个完整的例子,我用
List.of()
(自Java9以来)而不是ArrayList
,但流操作与ArrayList
我也是。我通常说,当涉及到更多列表元素的操作时,流操作不会很好地工作。这似乎是个例外;我发现溪流的解决方案我自己也很好。如果愿意,可以用循环来编码。
ps我不太喜欢在你没有表现出那么多努力的时候把工作代码泄露出去。只是我发现这更容易用代码解释,所以我妥协了。
编辑
不如我们收集一组值…
不,那不行。我举两个例子给你看。先简单一点,我刚去掉最后一个
up
因此只有两个值更改:[左,上,下]
即使删除了一个值更改,集合中仍有3个元素。你可能会想到你可以减去1。不是这样的。请看下一个也是最后一个示例:
现在有三个值更改,但集合中只有两个元素:
[左上]
如果你减去1,你会得到1。
你现在可能已经意识到了
Set
方法是,当相同的名称稍后再次出现并导致新的值更改时,它不考虑。p1iqtdky3#
有没有不遍历arraylist的方法来计算它?
不。
要查看列表中的每个值并与相邻值进行比较,需要遍历列表。没有神奇的捷径。