首次看到JCF并不知道是什么意思,度娘一下做更深一步的了解,才明白JCF是我们平常经常用的集合框架,根据自己的理解做一下的总结,有什么问题,请大家指正。
集合:也就是我们平常说的容器,其相当于一个容器,用来装东西的,里面可以放任意对象。
框架:我们为了解决问题,预先设计好的具有继承,实现关系的类和接口。
泛型:允许在定义某些类和接口的时候指定要使用的数据类型,比如,ArrayList<String> al = new ArrayList<String>();<>中String就是泛型。目前只有Collection接口里面实现的方法或者接口中才有这些泛型,在数组中暂时没有泛型。Collection 和Arrays类是一个算法类,里面提供了大量的方法。
1、Iterator类 是一个迭代器,使用格式如 Iterator it = set.iterator; while(it.hashNext()){ System.out.println(it.next());}
2、for循环,简化的一种for循环,可以遍历类中的所有元素 for(容器中元素类型 引用的名字:容器的具体对象){System.out.println(引用的名称)}
核心接口Collection接口,有两个直接的之类接口:Set List 还有一个间接的Map接口
Set集:该容器中对象没有顺序,而且不能重复;
List:该容器中对象有顺序,对象可以重复;
Map中存放的是键值对,键唯一值可以重复,且没有顺序。
平时使用的List接口中已经实现的类,主要有:
(1)ArrayList类 该类的低层依然是数组,但可以存放不同类型的数据;容器大小根据实际情况而自动变化。但没有克服连续的地址空间这个问题。
(2)LinkedList类 使用和ArrayList类差不多,只是此类实现了双向链表功能,而且存放的对象都在独立的空间中,通过对象前后的存放的上个数据的引用和下个数据的引用来实现,对象之间相互关联。
(3)vector和stack类 和ArrayList差不多,但比较老,这种类具有线程安全性,并且效率低下。
都有以下使用方法:add();get(index);remove(index);size();isEmpty();contains(obj);addAll(Collection c );我们查询时经常使用ArrayList,增删查改的时候,删除比较频繁时用LInkedList
Set集合
HashSet类,里面的对象不允许重复,且没有顺序,允许有null元素;
TreeSet类,里面对象也不重复,且按照自然排序来排的,不允许有null
方法有:add(); remove();只能查找全部对象,通过for循环来实现,或迭代器Iterator。
HashMap类,容器中存放的是键值对,也叫K-V对,存放的对象没有顺序,但键是唯一的,值不唯一。