<p>要根据对象的 id 去重,可以使用 Java 8 的 stream() 方法和 distinct() 方法来实现。</p>
<p>假设有一个包含对象的列表 List<Object> list,对象有一个 id 属性。</p>
<p>可以按照以下步骤去重:</p>
<ol>
<li>使用 stream() 方法将列表转换成流。</li>
<li>使用 map() 方法将流中的每个对象映射为其 id 属性。</li>
<li>使用 distinct() 方法去除重复的 id。</li>
<li>使用 mapToObj() 方法将流中的每个 id 映射回原始对象。</li>
<li>使用 collect() 方法将流中的对象收集到一个新的列表中。</li>
</ol>
<p>以下是一个示例代码:</p>
<pre><code class="language-java">List&lt;Object&gt; list = ...

List&lt;Object&gt; distinctList = list.stream()
        .map(obj -&gt; obj.getId())
        .distinct()
        .mapToObj(id -&gt; list.stream().filter(obj -&gt; obj.getId().equals(id)).findFirst().get())
        .collect(Collectors.toList());
</code></pre>
<p>在这个示例中,我们首先将列表转换为流,然后将流中的每个对象映射为其 id 属性。然后使用 distinct() 方法去除重复的 id。接下来,我们使用 mapToObj() 方法将流中的每个 id 映射回原始对象。最后,使用 collect() 方法将流中的对象收集到一个新的列表中。</p>
<p>请注意,这种方法可能不是最高效的,因为它在每次迭代中都要执行一个 filter 操作。如果列表中的对象数量较大,性能可能会受到影响。如果性能是一个重要因素,可以考虑使用其他方法,如使用 HashSet 来存储唯一的 id,并根据 id 来过滤对象。</p>
Java 8 列表去重:根据对象 ID 实现高效去重

原文地址: https://www.cveoy.top/t/topic/qmxO 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录