在Stream API中跳过相同的组合

时间:2018-09-21 11:38:50

标签: java java-stream

我有一个列表filteredList,并且我在每个元素上流式传输并使用每个元素来设置一些项目

filteredList.parallelStream().forEach(s->{

            ARChaic option=new ARChaic();
            option.setCpu(s.getNoOfCPU());
            option.setMem(s.getMemory());
            option.setStorage(s.getStorage());
            option.setOperatingSystem(s.getOperationSystem());


           ARChaic newOption= providerDes.getLatest(option); //this is a external service
        s.setCloudMemory(newOption.getMem());
        s.setCloudCPU(newOption.getCpu());
        s.setCloudStorage(newOption.getStorage());
        s.setCloudOS(newOption.getOperatingSystem());

});

目标是致电此服务,但如果以上选项相同,则请使用旧的服务。

例如-如果两个服务器具有相同的内存,CPU,操作系统和存储,​​则它将仅调用一次 getLatest

假设在filteredList的位置1和7处,我具有相同的配置,那么我不应该在7处再次调用getLatest,因为我已经有了先前的选项值,我将其设置为7(在服务调用后完成工作)

1 个答案:

答案 0 :(得分:0)

您可以将<div class="modal datepicker-modal" id="modal-a5a43c91-2426-5565-c216-1d8ccd0cfc1d" tabindex="0"> <div class="modal-content datepicker-container"> <div class="datepicker-date-display"> <span class="year-text"> </span> <span class="date-text"> </span> </div> <div class="datepicker-calendar-container"> <div class="datepicker-calendar"> </div> <div class="datepicker-footer"> <button class="btn-flat datepicker-clear waves-effect" style="visibility: hidden;" type="button"> </button> <div class="confirmation-btns"> <button class="btn-flat datepicker-cancel waves-effect" type="button"> Cancel </button> <button class="btn-flat datepicker-done waves-effect" type="button"> Ok </button> </div> </div> </div> </div> </div> equals添加到hashcode类中,以表示两个Server实例何时相等。从您的描述中,您将必须考虑并比较内存,cpu,操作系统和存储。

此后,您可以将Server映射为filteredList,以获取唯一的服务器作为键,该值将包含所有重复的服务器实例。您将为映射中的每个键调用一次服务,但是获得结果后,可以使用结果更新作为映射值的所有服务器实例。

Map<Server, List<Server>>