【问题标题】:Amending duplicate items inside an ArrayList修改 ArrayList 中的重复项
【发布时间】:2015-01-22 09:26:59
【问题描述】:

我有一个名为Feeds 的类,其中包含许多成员变量。其中有String 类型的变量date。我实现了一个ArrayList 的提要并按顺序添加对象。

我想要做的是搜索具有相同日期 String 的对象,如果出现次数超过 1,则重复日期 String 被设为 ""(空)但你仍然会有一个具有完整日期字符串的对象。

类似这样的:

Object1 (date : "01-01-2015");
Object2 (date : "01-01-2015");
Object3 (date : "04-01-2015");

//after the required code

Object1 (date : "01-01-2015");
Object2 (date : "");
Object3 (date : "04-01-2015");

List<Feeds> mFeeds = new ArrayList<Feeds>();
//add objects to list
mFeeds.add(...);

for(Feeds f : mFeeds){
   //search for objects that have the same date
   //skip the first repeatable and make the rest empty ""
}

【问题讨论】:

标签: java arraylist


【解决方案1】:

您可以使用HashSet&lt;String&gt; 查明您是否已经遇到日期:

Set<String> dups = new HashSet<> ();
for(Feeds f : mFeeds) {
    if (dups.contains(f.getDate())
        f.setDate(null); // this date already appeared in the list, so set it to null
    else
        dups.add(f.getDate()); // this is the first occurrence of this date
}

【讨论】:

    【解决方案2】:

    在 Java8 中它是单行的:

    Set<String> dups = mFeeds.stream().map(f -> f.getDate()).collect(Collectors.toSet());
    

    【讨论】:

      猜你喜欢
      • 2019-01-09
      • 2016-08-29
      • 1970-01-01
      • 2018-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-29
      • 1970-01-01
      相关资源
      最近更新 更多