ListMapSet之间的比较-创新互联

List接口的典型实现:一个抽象类(AbstractList)实现了List接口:
List(接口)
                    AbstractList(抽象类)

   Vector(类)            ArrayList          LinkedList
 Stack(类,继承于Vector)
List接口也是实现了Collection接口和Iterable接口,况且List是进行存储单列数据的集合,存储有顺序,允许进行重复
Listlist1=new ArrayList<>();
        Listlist2=new LinkedList<>();
        Listlist3=new Stack<>();
        Listlist4=new Vector<>();

创新互联是专业的张家港网站建设公司,张家港接单;提供网站制作、成都做网站,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行张家港网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
2.Map和Set

Map和Set是一种专门用于进行搜索的容器或者数据结构,总而言之,set和map存在的意义就是为了让查找效率提升;比如说以前的搜索方式是直接进行遍历,时间复杂度是O(N),但是元素比较多效率会变得非常慢,或者是二分查找,时间复杂度是log(n),但是前提是数组顺序必须是有序的

  set
   SortSet                    HashSet
TreeSet     
   Map(接口)
      SortMap(接口)       HashMap
TreeMap

1)map是一个接口类,该类没有继承collection类,没有实现Iterator不能实现迭代器进行打印

2)该类存放的是key-value的键值对,并且要求Key是唯一的,不可以重复

3)如果再次向map里面放元素,如果Key的值与之前的相同,那么就会更新Value的值;

4)map接口中有TreeMap(实现了sortMap是基于排序的)

1)Map是一个接口,是不可以进行实例化对象的,如果想要实例化对象只能依靠实现类TreeMap或者HashMap

2)Map存放键值对的key是唯一的,value是可以重复的

3)Map中的Key可以全部分离出来,放到Set中进行访问

4)Map中的Value可以全部分离出来,存储在Collection中任意一个子集合中(这里面的value很有可能是重复的)

5)Map键值对的Key不能被修改,value可以进行修改,如果想要修改Key,只能先将Key进行删除,然后再来进行重新插入

6)TreeMap实现了SortMap接口,放入TreeMap的数据都是可以进行比较的,都是实现了Compareable接口或者是Compareator接口,其中还不可以进行存放null值

1)但是Set类只可以存放K的值,况且set中不能存放重复的元素,Set接口实现了Collection接口和Iterator接口,是可以使用迭代器来进行打印的

2)Set只是继承于Collection接口的一个类

3)底层是使用Map来进行实现的,是使用Key和Object中的一个默认对象作为键值对插入到Map里面的

4)Set不能插入空的Key,TreeSet实现了SortSet接口,是可比较的

5)Set大的功能就是针对元素来进行去重

6)Set中的Key是不能进行修改的,如果想进行修改,那么只能把原来的key删除掉,然后再重新进行插入

TreeSet和HashSet:他们都是线程不安全的

1)TreeSet的底层是红黑树,但是HashSet的底层是哈希桶

2)TreeSet中的元素插入删除查找的时间复杂度是log2(N),因为它是按照红黑树的特性来进行删除的,增删改查,但是HashSet的增删改查的时间复杂度是O(1),先进行计算Hash地址,算出下标,在进行遍历链表进行增删改查

3)TreeSet中的元素是关于Key有序的,因为实现了SortSet接口,但是HashSet是无序的,底层是一个散列表

4)TreeSet要求存储的元素必须实现Compareble或者是Compator接口,但是HashSet要求存储自定义对象必须重写HashCode和equals方法

5)应用场景:TreeSet应用于key有序的情况下,但是HashSet应用于Key无需的情况下

HashMap与HashSet的区别

1)HashMap和HashSet底层实现不一样,HashSet底层实现了Set,Iterable接口,和Collection接口,HashMap底层只实现了Map接口

2.HashMap中使用put()将元素加入map中,而HashSet使用add()将元素放入set中。

3)HashSet里面的值是可以通过迭代器来进行遍历里面的值的,但是TreeMap和HashMap是不可以通过迭代器来进行遍历的

HashSet如何去重?

1)HashSet存储的数据结构就是哈希表,也就是数组和链表的混合物,这个类实现了set接口

2)HashSet去重:

HashSet底层依赖的是哈希表,在元素存放的时候,会先根据元素的hashcode的值来进行判定,如果没有相同的hashcode值就放入数组里面·,hashcode是object的方法,每一个对象的hashcode的值是唯一的,所以可以理解成hashcode值表示这个对象在内存中的位置,字符串的hashcode(),是根据内容进行计算的,如果hashcode相等,则会用equals()方法来进行比较

​
1. hashmap put方法源码
public V put(K key, V value) {
        return putVal(hash(key), key, value, false, true);
    }
static final int hash(Object key) {
        int h;
        return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>>16);
    }

​
Queue:
   Queue
             DeQueue                         PriorityQueue
LinkedList            Vector
                            Stack

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


分享名称:ListMapSet之间的比较-创新互联
网站路径:http://hbruida.cn/article/hhjpg.html