容器:
1,概念:javaAPI所提供的一系列类的实例,在用于在程序中存放对象。
2,容器的概念图:
3,java集合框架包含的内容
集合框架都包含三大块内容:对外的接口,接口的实现,和对集合运算的算法。
①:对外的接口:在上面的容器概念图中,紫色的区域表示的是集合框架的对外接
口。例如:collection,set,list和map。
②:接口的实现:在上面的容器概念图中,黄色的区域表示的是集合框架的实现接
口,例如:HashMap,HashSet等。
③:集合运算的算法:在一个实现了某个集合框架中的接口的对象身上完成某种用
用的计算方法,例如查找,排序等。详细查找Jdk帮助文档。
4,集合框架的区别:
从上图我们可以看出,集合框架共有两大类的接口:collection和Map。
其中collection接口下又有两个子接口:set和list。所以我们通常说java集合框架共有
三大类接口,分别是set,list,和Map。
共同点:都是集合框架的接口,都可以用来存储对象。
不同点:
①:collection接口存储一组不唯一(也就是允许重复),无序的对象。
②:set接口继承自collection接口,存储一组唯一(也就是不允许重复)、无序的
对象。
③:List接口继承自collection接口,存储一组不唯一(可以重复),有序(以元素
插入的次序来放置元素,不会重新排列)的对象。
④:Map接口存储一组成对的键----值对象。提供key---->value的映射关系。Map
中的key不要求有序,不允许重复。Value同样不要求有序,也允许重复。
5,list集合
List集合允许有序和重复的对象。
List是按照插入的顺序来放置元素。
List的常用类有ArrayList和LinkedList。
①:ArrayList对数组进行了封装,实现了长度可变的数组。在内存中分配连续的
空间,优点就在于遍历元素和随机访问的效率高!
publicstatic voidmain(String[] args) {
Dogouou=newDog("欧欧","黑狗");
Doghaha=newDog("哈哈","黄狗");
Listlist=newArrayList();
list.add(ouou);
list.add(haha);
System.out.println(list.size());
//遍历
for(int i = 0;i < list.size(); i++) {
System.out.println(((Dog)list.get(i)).getName());
}
System.out.println("删除");
list.remove(0);
for(int i = 0;i < list.size(); i++) {
System.out.println(((Dog)list.get(i)).getName());
}
}
注意,List的常用方法get(intindex)是返回指定索引处位置的元素。返回
值是Object类型。在使用钱需要进行强制转换。
②:LinkedList:采用的是链表的存储方式。优点在于插入,删除元素时效率比较
高,他提供了addFirst();addLast();removeFirst();removeLast();等方法,可以在
LinkedList首部或者结尾的地方进行删除和添加,所以这些方法使得LinkedList可
以被用作堆栈(stack)或者队列(quece);
LinkedList的主要方法:
addFirst(Objo):向列表的首部添加元素。
.........
③:Vector和ArrayList的异同点:
相同点:也是表示可变长度数组的集合类。
不同点:Vector的执行效率低于ArrayList,因为Vector是线程安全的,而
ArrayList注重速度,非线程安全。
当数组长度需要增长时,Vector默认是增长数组长度的一倍,而
ArrayList只增长该数组长度的50%。有利于节省空间。
6,Map:专门来处理键值对映射关系数据。
publicstatic voidmain(String[] args) {
Mapmap=newHashMap<Object,Object>();
map.put("CN","中国");
map.put("USA","美国");
System.out.println(map.get("CN"));;
}
Map:的常用方法
Put(Objectkey,Object value):以键值对的方式进行存储
Get(Objectkey):根据键值来返回value值。如果键值不存在,返回null。
ketSet();返回键的集合。
publicstatic voidmain(String[] args) {
Mapmap = newHashMap<Object,Object>();
map.put("cn","中国");
map.put("usa","美国");
Scannerinput = newScanner(System.in);
System.out.print("请输入国家名称:");
StringcountryName= input.next();
for(int i = 0;i < map.size(); i++) {
System.out.println(map.get(countryName));
}
}