那么,之前在公司工作了这么久,一直在找个机会来全面的对Java这门语言做一个系统的分析与概况,由于各种原因,一直耽误到了现在,过完年终于有时间了,于是写下了这片文章,想入门Java的同学们,愿这片Java集合文章能帮助到你们;大佬降临,还望指出不足,十分十分感谢!
我们知道,在Java语言中,集合是一个很重要的知识点;它就是一个容器,它无时无刻都存在,无时无刻都要用到它;首先集合是将多个元素组成一个单元的对象。集合类的作用是用于储存、检索和操纵数据,以及将数据从一个方法传输至另一个方法;它最主要的任务就是存储对象,储存数据。
目前我所了解的是Java集合分为俩大块: Map集合和Iterable集合以及其子子孙孙后代
一、Map大集合
Map集合是一个大接口,被HashMap、TreeMap、LinkedHashMap三大集合所实现,这三大集合都是以键值对的形式来存储对象,以下为HashMap、TreeMap、LinkedHashMap三大集合的区别
1.HashSet是Map集合中速度最快的,用时间差得出,代码如下
HashSet hashSet = new HashSet() ;
TreeSet treeSet = new TreeSet () ;
LinkedHashSet linkedHashSet = new LinkedHashSet () ;
long start=System.currentTimeMillis();
for(int i=0; i<500000; i++){
//hashSet.add(i);//速度最快
//linkedHashSet.add(i);//速度中等
treeSet.add;//速度最慢
}
System.out.println(System.currentTimeMi11ic()-start);
2.TreeSet是Map集合中有自动排序功能,这个大家可以去编译器自己试试,挺简单的,就不提供代码
3.LinkedHashMap是Map集合中插入的顺序和它输出的顺序也是一样的,此处省略代码
4.那三大集合区别在哪呢,上面三大点就是其最大的区别,总结:
①Map中要插入、删除、定位元素咱们就用HashMap;
②Map中要用自动排序的,就用TreeMap;
③Map中要先进先出的就用LinkedMap。
二、Iterable大集合
这个集合就挺有趣的,Iterable大集合那真是可谓子孙满堂呐,Iterable大集合下面有个儿子叫Collection接口,而Collection集合下面又由三个儿子,分别是List集合,Set集合,Queue集合
1.Iterable大集合
①实现Iterable接口的类呢,可以增强for循环,也就是foreach;
②实现Iterable接口的集合类必须提供一个名为[迭代器]Iterator()的方法,该方法的返回值为Iterator;
2.Collection(java.util包)中集合
不是以键值对形式存储数据,其中的方法自己可以去试试,但是有个方法我得着重的说明,那就是remove(Object)这个方法,为什么呢?因为它爸爸Iterable大集合也有这个方法remove()。那么区别在哪呢?以下几点:
①有无参数:Collection的remove(Object)是要求带参数的,Iterable的remove()就不要带了,如果哈,还是儿子的要求多,屁事多;
②性能方面:这个方面果然姜还是老的辣,Iterable的remove()要比Collection的remove(Object)强,因为Collection的remove(Object)方法必须首先找出要被删除的项,而它又是单练表结构查询,单链表查询效率低,而Iterable的remove()要结合next()方法使用,效率要高;
③容错方面:只要记得这点,反正儿子要比老爸皮一点,吃的亏没得老爸多,所以这方面Iterable的remove()还是更胜一筹。
3.List、Set、Queue三个兄弟集合
①List集合,可以添加重复元素,有顺序,而且下面又有ArrayList,LinkedList,Vector三个集合实现类
a.ArrayList:get和set方法性能比较高;
b.LinkedList:新项的插入和现有项的删除性能高;
c.Vector:Vector用了线程同步技术,安全性高,但是性能就比较差了。
②Set集合:不可以添加重复元素,没有顺序,而且下面又有HashSet,TreeSet,LinkedHashSet三个集合实现类,和Map集合很像
a.HashSet:速度最快,没有什么明显的顺序保存元素,集合中元素中可以为NULL,但是只能放一个NULL;
b.TreeSet:按照比较结果的升序保存对象;
c.LinkedHashSet:按照被添加的顺序保存对象。
③Queue集合:这个本人在工作中并没有用到很多,所以知道它是先进先出的模式,如有大神知道,请求指教!
那么今天的集合知识就分享到这里,还望大佬指出不足指出,希望通过这篇文章让入门Java的小伙伴们能够对Java基础知识有不一样的认识,十分感谢!!!