ListMapSet之间的比较-创新互联
List接口的典型实现:一个抽象类(AbstractList)实现了List接口:List接口也是实现了Collection接口和Iterable接口,况且List是进行存储单列数据的集合,存储有顺序,允许进行重复List(接口) AbstractList(抽象类) Vector(类) ArrayList LinkedList Stack(类,继承于Vector)
创新互联是专业的张家港网站建设公司,张家港接单;提供网站制作、成都做网站,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行张家港网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!List
list1=new ArrayList<>(); List list2=new LinkedList<>(); List list3=new Stack<>(); List list4=new Vector<>();
2.Map和SetMap和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()方法来进行比较
Queue: 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 DeQueue PriorityQueue LinkedList Vector Stack
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
分享名称:ListMapSet之间的比较-创新互联
网站路径:http://hbruida.cn/article/hhjpg.html