0

我从 .txt 文件中读取了所有 id 并将这些 id 插入到 Vector 中。

            String pathSelectedfile = fileChooser.getSelectedFile().getAbsolutePath();
            File selectedFile = new File(pathSelectedfile);
            Scanner readFile = new Scanner(selectedFile);

            Vector ids=new Vector();
            while (readFile.hasNextLine()) {
                String id= readFile.nextLine();
                ids.addElement(id);
            }

然后我想删除 Vector.i 中的多个 id。我可以通过 for 循环来做到这一点,但信息太大了。tnx 很多

4

4 回答 4

2

完全删除重复的 id,您可以使用以下内容:

        Set<String> ids=new LinkedHashSet<String>();
        Set<String> duplicates=new HashSet<String>();
        while (readFile.hasNextLine()) {
            String id= readFile.nextLine();
            if(!ids.add(id)) {
                duplicates.add(id);
            }
        }
        ids.removeAll(duplicates)

请注意,与 Vector 不同,LinkedHashSet 是不同步的。在大多数情况下,这不是一件坏事,但如果您确实需要同步它,请使用 Collections.synchronizedSet() 包装它

于 2012-12-15T08:34:35.050 回答
2

删除多个值

    Vector vector = new Vector();
    vector.add("value1");
    vector.add("value2");
    vector.add("value3");
    vector.add("value4");
    System.out.println("Size : "+vector.size());
    // to remove single value
    vector.remove("value1");
    System.out.println("Size : "+vector.size());
    Vector itemsToRemove = new Vector();
    itemsToRemove.add("value3");
    itemsToRemove.add("value4");
    //remove multiple values
    vector.removeAll(itemsToRemove);
    System.out.println("Size : "+vector.size());

    //to remove all elements
    vector.removeAllElements();
    // or
    vector.clear();

但是不要使用Vector考虑使用,ArrayList因为 Vector 是过时的集合。阅读本文:为什么 Java Vector 类被认为已过时或不推荐使用?

ArrayList<String> idList = new ArrayList()如果您仅在列表中存储 String 元素,也可以使用泛型。

如果要在添加元素时跳过重复项Vector,请使用以下代码

   Vector vector = new Vector() {
        @Override
        public synchronized boolean add(Object e) {
            if(!contains(e)){
                return super.add(e);
            }
            System.out.println("Element " + e +" is duplicate");
            return false ;
        }
    };

但是,如果您只想添加独特的元素,请使用Set

于 2012-12-15T08:40:09.923 回答
0

阅读 javadoc 并注意以remove http://docs.oracle.com/javase/6/docs/api/java/util/Vector.html开头的方法。这应该是你的第一个方法而不是 SO。

于 2012-12-15T08:32:13.690 回答
0

如果您“想删除 Vector 中的多个 id”,请执行以下操作

ids = new Vector(new HashSet(ids))
于 2012-12-15T09:03:20.180 回答