java中去掉一个 Vector 集合中重复的元素小结

在java中去掉一个 Vector 集合中重复的元素

1)通过Vector.contains()方法判断是否包含该元素,如果没有包含就添加到新的集合当中,适用于数据较小的情况下。

private Vector getNoSameObjectVector(Vector vector){
      Vector tempVector = new Vector();
      for (int i=0;i<vector.size();i++){
           Object obj = vector.get(i);
            if(!tempVector.contains(obj){
                   newVector.add(obj);

            }
      }

     return  tempVector;

}

 

2)还有一种简单的方式,HashSet set = new HashSet(vector);

a)

private Vector getNoSameObjectVector(Vector vector){

      Vector tempVector = new Vector();

      HashSet set = new HashSet(vector);

      //addAll(Collection c);  //可以接受Set和List类型的参数

      tempVector.addAll(set);

      retrun tempVector;

}

 

b)

private Vector getNoSameObjectVector(Vector vector){

      Vector tempVector = new Vector();

      HashSet set = new HashSet(vector);

      tempVector =  setToVector(set);

      retrun tempVector;

}

 

private Vector setToVector(Set set){
     Vector vector = new Vector();
     Iterator i = from.iterator();
     while(i.hasNext()){
          vector.add(i.next());
     }
     return vector;
}

 

 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 要清除 std::vector 重复元素并保持相对位置不变,可以使用 std::unique 函数。 这是一个示例代码: ``` #include <algorithm> #include <vector> int main() { std::vector<int> v{1, 2, 2, 3, 3, 3, 4, 4, 4, 4}; // 将 v 重复元素清除 v.erase(std::unique(v.begin(), v.end()), v.end()); // 现在 v 元素为 {1, 2, 3, 4} return 0; } ``` std::unique 函数会在指定的范围内找出所有重复元素,并将它们放在序列的末尾。然后,你可以使用 std::vector::erase 函数来删除序列末尾的这些重复元素。 注意,这个方法只能用于删除相邻的重复元素。如果你想要删除序列所有的重复元素,可以使用 std::sort 函数将序列排序,然后使用 std::unique 函数。 示例代码: ``` #include <algorithm> #include <vector> int main() { std::vector<int> v{4, 3, 4, 2, 3, 1, 2, 1}; // 将 v 元素排序 std::sort(v.begin(), v.end()); // 将 v 重复元素清除 v.erase(std::unique(v.begin(), v.end()), v.end()); // 现在 v 元素为 {1, 2, 3, 4} return 0; } ``` 希望这些信息能帮到你! ### 回答2: 清除一个Vector重复元素,并保持相对位置不变,可以通过遍历Vector的方法实现。 首先,创建一个新的空Vector来存储去重后的元素。然后,遍历原始的Vector,逐个检查每个元素是否已经存在于新的Vector,如果不存在则将其添加到新的Vector。 具体的实现过程如下: 1. 创建一个新的空Vector,命名为newVector。 2. 遍历原始的Vector,命名为originalVector。 3. 对于originalVector的每个元素,逐个检查: - 判断该元素是否已经存在于newVector。 - 如果不存在,则将该元素添加到newVector。 4. 完成遍历后,newVector就存储了去重后并保持相对位置不变的元素。 以下为示例代码: ``` import java.util.Vector; public class RemoveDuplicateElementsInVector { public static void main(String[] args) { Vector<Integer> originalVector = new Vector<>(); originalVector.add(1); originalVector.add(2); originalVector.add(3); originalVector.add(2); originalVector.add(4); originalVector.add(3); Vector<Integer> newVector = new Vector<>(); for (Integer element : originalVector) { if (!newVector.contains(element)) { newVector.add(element); } } System.out.println("去重后的Vector:"); for (Integer element : newVector) { System.out.println(element); } } } ``` 运行以上示例代码,输出结果为: ``` 去重后的Vector: 1 2 3 4 ``` 通过以上操作,我们成功地清除了Vector重复元素,并保持了相对位置不变。 ### 回答3: 要清除一个Vector重复元素并保持相对位置不变,可以使用HashSet来实现。 首先,创建一个空的HashSet,并利用它的唯一性保证来过滤重复元素。然后,创建一个新的Vector,用于存储不重复元素。遍历原始Vector的每个元素,若该元素在HashSet不存在,则将其添加到HashSet,并将其添加到新的Vector。 以下是一个示例代码实现: ```java import java.util.HashSet; import java.util.Vector; public class Main { public static void main(String[] args) { Vector<Integer> originalVector = new Vector<>(); originalVector.add(1); originalVector.add(2); originalVector.add(3); originalVector.add(2); originalVector.add(4); originalVector.add(3); HashSet<Integer> uniqueSet = new HashSet<>(); Vector<Integer> newVector = new Vector<>(); for (Integer element : originalVector) { if (!uniqueSet.contains(element)) { uniqueSet.add(element); newVector.add(element); } } System.out.println("原始Vector:" + originalVector); System.out.println("去重后的Vector:" + newVector); } } ``` 运行此代码,输出结果为: ``` 原始Vector:[1, 2, 3, 2, 4, 3] 去重后的Vector:[1, 2, 3, 4] ``` 可以看到,去重后的Vector元素保持了相对位置的不变。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值