数据结构笔记总结(6.2)基于链表的集合实现

基于链表的集合实现

这一节我们用链表来实现一下集合这种数据结构

为什么我们要单独拿出链表来实现集合这种数据结构呢?

因为二分搜索树和链表都属于动态的数据结构。

对于二分搜索树来说,数据是存储在一个个node中,链表也是存储在一个个node中,只不过这两个node的定义是不同的。

二分搜索树有左右两个指针指向左子树和右子树,对于链表来说,每一个node都指向了下一个node,由于都属于同样的动态数据结构,基于这两种数据结构为底层来实现集合之后可以相应的来比较其性能。

通过性能的比较,可以直观的看到二分搜索树这种数据结构优势所在。

代码演示

创建一个新的类LinkedListSet.java,下面来具体的实现它

import java.util.ArrayList;

public class LinkedListSet implements Set {

    private LinkedList 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 words1 = new ArrayList<>();
        if(FileOperation.readFile("pride-and-prejudice.txt", words1)) {
            System.out.println("Total words: " + words1.size());

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

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

运行结果

源码下载

[dm href=’https://www.jikewenku.com/product/1487.html’]下载地址[/dm]

导航目录

[dm href=’https://www.jikewenku.com/geeknote/2241.html’]查看导航[/dm]

本站所有文章均由网友分享,仅用于参考学习用,请勿直接转载,如有侵权,请联系网站客服删除相关文章。若由于商用引起版权纠纷,一切责任均由使用者承担
极客文库 » 数据结构笔记总结(6.2)基于链表的集合实现

欢迎加入「极客文库」,成为原创作者从这里开始!

立即加入 了解更多