Java 使用链表实现无序集合Set

版权声明:转载请随意! https://blog.csdn.net/qq_41723615/article/details/89226407

由于二分搜索树与链表都是动态的数据结构,所以同样链表也可以实现集合Set。

下面使用链表类作为底层实现,不过这里不做链表的实现,有兴趣可以阅读文章:

https://blog.csdn.net/qq_41723615/article/details/89057913

import java.util.ArrayList;

public class LinkedListSet<E> implements Set<E> {

    //设置对象
    private LinkedList<E> list;
    //调用构造实例对象
    public LinkedListSet(){
        list = new LinkedList<>();
    }

    @Override
    public int getSize(){
        return list.getSize();
    }

    @Override
    public boolean isEmpty(){
        return list.isEmpty();
    }

    @Override
    public void add(E e){
        //集合元素不能重复
        if(!list.contains(e)) {
            list.addFirst(e);
        }
    }

    @Override
    public boolean contains(E e){
        return list.contains(e);
    }

    @Override
    public void remove(E e){
        list.removeElement(e);
    }

    public static void main(String[] args) {

        System.out.println("Pride and Prejudice");

        ArrayList<String> words1 = new ArrayList<>();
        if(FileOperation.readFile("pride-and-prejudice.txt", words1)) {
            System.out.println("Total words: " + words1.size());

            LinkedListSet<String> set1 = new LinkedListSet<>();
            for (String word : words1) {
                set1.add(word);
            }
            System.out.println("Total different words: " + set1.getSize());
        }

        System.out.println();


        System.out.println("A Tale of Two Cities");

        ArrayList<String> words2 = new ArrayList<>();
        if(FileOperation.readFile("a-tale-of-two-cities.txt", words2)){
            System.out.println("Total words: " + words2.size());

            LinkedListSet<String> set2 = new LinkedListSet<>();
            for(String word: words2) {
                set2.add(word);
            }
            System.out.println("Total different words: " + set2.getSize());
        }
    }
}

猜你喜欢

转载自blog.csdn.net/qq_41723615/article/details/89226407
今日推荐