Set集合按条件删除元素

1. 循环对比,对Set进行遍历对比.相同则删除.

  注: 1.不能在for循环中删除,这样会引起Set的size();变化,进而程序报错.

     2.不能在foreach中使用set.remove(Object obj);方法

    正确的是使用迭代器,利用其迭代器对象的remove()方法,但必须保证在使用remove()之前调用迭代器的next()方法;

    部分代码示例如下:(要删除tempXaxis集合中与statDate相同的元素,其中tempXaxis的类型为HashSet)

...
  Iterator<Date> tempXaxisIterator = tempXaxis.iterator();
  while (tempXaxisIterator.hasNext()) {
    Date next = tempXaxisIterator.next();
    for (MosStat mosStat : mosStats) {
      Date statDate = mosStat.getStatDate();
      if (next.equals(statDate)) {
        tempXaxisIterator.remove();
      }
    }
  }
...
           

2. 利用集合的contains,判断元素是否在集合中,而后调用集合的remove()方法进行元素删除;

  示例代码:

...
  for (MosStat mosStat : mosStats) {
    Date statDate = mosStat.getStatDate();
    if (tempXaxis.contains(statDate)) {
      tempXaxis.remove(statDate);
    }
  }
...

 

转载于:https://www.cnblogs.com/sknn/p/8274688.html

循环删除Set集合中的元素,可以使用迭代器来实现。首先,通过调用Set的iterator()方法获取到一个迭代器对象。然后,使用while循环和迭代器的hasNext()方法来遍历Set集合。在循环内部,可以使用迭代器的remove()方法来删除当前遍历到的元素。下面是一个Java代码示例: ``` Set<Integer> set = new HashSet<>(); set.add(1); set.add(2); set.add(3); Iterator<Integer> iterator = set.iterator(); while (iterator.hasNext()) { Integer element = iterator.next(); // 根据条件判断是否删除元素 if (condition) { iterator.remove(); } } System.out.println(set.size()); ``` 在上面的代码中,我们首先创建了一个名为set的HashSet对象,并添加了一些元素。然后,创建一个迭代器对象iterator,并使用while循环和迭代器的hasNext()方法来遍历set集合。在循环体内部,我们使用了一个条件语句,根据条件判断是否删除当前遍历到的元素。如果条件满足,则调用迭代器的remove()方法来删除元素。最后,输出set集合的大小,即删除元素后的结果。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [[java]Set集合删除元素失效问题](https://blog.youkuaiyun.com/qq_22873427/article/details/109082238)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [java循环遍历删除List和Set集合元素的方法(推荐)](https://download.youkuaiyun.com/download/weixin_38716563/12790406)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [Java 遍历 Set 集合的方法,以及如何遍历删除 Set 集合中的元素?](https://blog.youkuaiyun.com/piaoranyuji/article/details/117108681)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值