Java集合框架顶层接口 Collection
Collection 继承 java 的迭代接口Iterable ,
List 继承Collection ArrayList 和 LinkList实现List 当然我们常用的是ArrayList
1,ArrayList 可以说是一个大一点的数组,就像一个长方形的大盒子,大盒子里有顺序的放小盒子,每个盒子放一个元素,每个 盒子上有数字就是下标,从0开始,可以有重复值,操作ArrayList的查询速度相比LinkList较快,应为有下标所以快吧,还有ArrayList是线程不安全的,在多线程中使用list的时候建议用Vector, 因为Vector绝大部分是用同步关键字(synchronized)修饰的
2,LinkList 就像大的容器,所有的数据都是用链子连起来的 ,没个数据下方都有两个下标,一个下标是前一个元素的下标,一个下标是自己的下标 同时是下一个元素的前一个下标(毕向东解释的,还画了图很清晰),它是无序的,增删速度相对于ArrayList较快。
还有就是迭代器(Iterator)上次面试问到,很尴尬,我居然不知道怎么说,今天特意看了个视频,老师讲的,迭代器是什么,迭代器就是遍历集合的一个方式,ArrayList,LinkList,HashSet,LinkHashSet,他们是不同的集合就好比是不同饮料,我们喝着味道不一样,但是喝他的方式都是一样的,这个迭代器就相当于喝他的方式。这个喝的方式是什么,
Iterator<String> arrayIt = ArrayList.iterator(); //hasNext();就是是否还有下一个 有下一个就返回true while(linkIt.hasNext()){//用while 循环方便简单,但是弊端就是循环完了arrayIt还在 用for就存在这种问题 //打印下一个元素 System.out.println(listIt.next()); }
还有就是泛型, 泛型 字面意思就是广泛的类型(这么解释不知道合不合理,个人理解),在java中泛型是伪泛型,应为java编译后的class文件中是没有泛型的, 有泛型是为了编译通过,同一个类型做同一个类型的事。我表达能力有问题,希望指点。