网站建设资讯

NEWS

网站建设资讯

Java底层基于链表如何实现集合和映射

这篇文章给大家分享的是有关Java底层基于链表如何实现集合和映射的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

成都创新互联网络公司拥有10年的成都网站开发建设经验,上千余家客户的共同信赖。提供成都网站建设、成都网站制作、网站开发、网站定制、卖链接、建网站、网站搭建、响应式网站开发、网页设计师打造企业风格,提供周到的售前咨询和贴心的售后服务

在Java底层基于二叉搜索树实现集合和映射中我们实现了底层基于二叉搜索树的集合,本节就底层如何基于链表实现进行学习,注意:此处的链表是之前自己封装的.

1、集合set相关功能

Java底层基于链表如何实现集合和映射

1.1 add()的不同

用于链表本身没有去重的效果,因此我们在做基于链表的集合时,需要对add()方法做一下特殊处理,如下增加一个判断即可。

 @Override
  public void add(E e) {
    if (!list.contains(e)) {
      list.addFirst(e);
    }
  }

2.集合实现

2.1 Set接口定义

/**
 * 集合的接口
 */
public interface Set {
  void add(E e);//添加 <——<不能添加重复元素
  void remove(E e);//移除
  int getSize();//获取大小
  boolean isEmpty();//是否为空
  boolean contains(E e);//是否包含元素
  
}

3.2 基于链表实现集合Set

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 boolean contains(E e) {
    return list.contains(e);
  }

  @Override
  public void add(E e) {
    if (!list.contains(e)) {
      list.addFirst(e);
    }
  }


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

3.3测试:两本名著的词汇量 和不重复的词汇量

import java.util.ArrayList;

public class LinkedListSetTestDemo {
  public static void main(String[] args) {

    System.out.println("Pride and Prejudice");
    //新建一个ArrayList存放单词
    ArrayList words1 = new ArrayList<>();
    //通过这个方法将书中所以单词存入word1中
    FileOperation.readFile("pride-and-prejudice.txt", words1);
    System.out.println("Total words : " + words1.size());

    LinkedListSet set1 = new LinkedListSet<>();
    //增强for循环,定一个字符串word去遍历words
    //底层的话会把ArrayList words1中的值一个一个的赋值给word
    for (String word : words1)
      set1.add(word);//不添加重复元素
    System.out.println("Total different words : " + set1.getSize());


    System.out.println("-------------------");
    System.out.println("Pride and Prejudice");
    //新建一个ArrayList存放单词
    ArrayList words2 = new ArrayList<>();
    //通过这个方法将书中所以单词存入word1中
    FileOperation.readFile("a-tale-of-two-cities.txt", words2);
    System.out.println("Total words : " + words2.size());

    LinkedListSet set2 = new LinkedListSet<>();
    //增强for循环,定一个字符串word去遍历words
    //底层的话会把ArrayList words1中的值一个一个的赋值给word
    for (String word : words2)
      set2.add(word);//不添加重复元素
    System.out.println("Total different words : " + set2.getSize());

  }
}

结果:

 Java底层基于链表如何实现集合和映射

这里需要说明一下就是关于我们统计的单词数只考虑了每个单词组成的不用,并没有对单词的特殊形式做区分。

Java的优点是什么

1. 简单,只需理解基本的概念,就可以编写适合于各种情况的应用程序;2. 面向对象;3. 分布性,Java是面向网络的语言;4. 鲁棒性,java提供自动垃圾收集来进行内存管理,防止程序员在管理内存时容易产生的错误。;5. 安全性,用于网络、分布环境下的Java必须防止病毒的入侵。6. 体系结构中立,只要安装了Java运行时系统,就可在任意处理器上运行。7. 可移植性,Java可以方便地移植到网络上的不同机器。8.解释执行,Java解释器直接对Java字节码进行解释执行。

感谢各位的阅读!关于“Java底层基于链表如何实现集合和映射”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!


分享文章:Java底层基于链表如何实现集合和映射
链接分享:http://njwzjz.com/article/pieipd.html