最新公告
  • 欢迎您光临极客文库,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入我们
  • 基于链表的集合实现

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

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

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

    对于二分搜索树来说,数据是存储在一个个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)基于链表的集合实现

    常见问题FAQ

    如果资源链接失效了怎么办?
    本站用户分享的所有资源都有自动备份机制,如果资源链接失效,请联系本站客服QQ:2580505920更新资源地址。
    如果用户分享的资源与描述不符怎么办?
    可以联系客服QQ:2580505920,如果要求合理可以安排退款或者退赞助积分。
    如何分享个人资源获取赞助积分或其他奖励?
    本站用户可以分享自己的资源,但是必须保证资源没有侵权行为。点击个人中心,根据操作填写并上传即可。资源所获收益完全归属上传者,每周可申请提现一次。
    如果您发现了本资源有侵权行为怎么办?
    及时联系客服QQ:2580505920,核实予以删除。

    Leave a Reply

    Hi, 如果你对这款资源有疑问,可以跟我联系哦!

    联系发布者

    Leave a Reply

    Hi, 如果你对这款资源有疑问,可以跟我联系哦!

    联系发布者
    • 108会员总数(位)
    • 3695资源总数(个)
    • 3本周发布(个)
    • 0 今日发布(个)
    • 181稳定运行(天)

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

    立即加入 了解更多
    成为赞助用户享有更多特权立即升级