一. 容器

1. 概念

保存多个对象的对象

2.功能

a) 与数组相同

b) 优点:自动增加或减小容器的长度

3.、容器(又叫集合):

重要的图:

wKiom1W_HX3AEh3yAAEL_8HjERY223.jpg

Collection接口常用方法

1) 容器对内部对象的操作

 

迭代代码片段

 

 

 

4.List:有序可以重复;

常用方法:除了Collection里面的方法外,还有如下:

备注:get()通过下标输出下标对应的值;set()通过下标去替代相应的下标值;

indexof(Object o)获取o值在给定容器中第一个出现的索引;

lastIndexOf(Object o)获取0值在给定容器中最后出现的索引;

 

4.Set:无序不可重复;

无序:第一次随机,接下来如果没有其它元素的加入或退出,则一直保持这个的顺序,有别于随机;

不可重复:特别小心“对象”问题,必须先重写equals和hashcode()方法;

hashcode()判断两个对象是否指向同一个对象;

常用方法:Set接口本身不提供额外的方法,所有的方法都来自Collection;

常用实现类:HashSet();TreeSet();

 

Map(掌握)

1)  保存键值对形式的数据

例如:学号和学生姓名

2) 保存元素时,如果key相同,值会被覆盖

3) Key是唯一的,不允许重复

四.JDK增强for循环

foreach:

语法:for(变量类型 变量名:数组对象名/容器对象名){ 只要输出变量名就可以遍历 }

优点:遍历极快;

缺点:没有下标,不能用来排序;

 

五.Iterator接口:迭代器;Collection的所有子接口都默认实现iterator()方法;

什么是迭代?所谓迭代就是只会把该容器里面的值遍历一次;(有且只有一次)

常用方法:

boolean hasNext():判断右边还有没有元素;

Object next():返回游标左边的值,并移动到下一个;

注意:Iterator 类不是collection的子类,但是collection类里面有iterator的抽象方法,所以每个collection的子类里面都要实现该方法

 

六. 泛型

1. 好处

1) 保证类型安全

2) 获取数据时不需要类型强制转换

 

会出现下面的错误,类型转换错误

The method add(int, String) in the type List<String> is not applicable for the arguments (int)

 

Multiple markers at this line

- ArrayList is a raw type. References to generic type ArrayList<E> should be 

 parameterized

- List is a raw type. References to generic type List<E> should be parameterized

七.Arrays与Collections:

(1)Arrays针对数组;Collections针对List接口;

(2)Arrays常用方法:sort()升序排序;

       Arrays.sort(数组);

System.out.println(Arrays.toString(数组));

          Arrays.fill(array, 3);

System.out.println(Arrays.toString(array));

List asList = Arrays.asList(6,4,9,12,5,8,10,1,3,7,20, 50);

Object object = asList.get(5);

System.out.println(object);//8

Collections常用方法:

sort():升序排序;

reverse():逆序;与StringBuffer里面的反转方法不一样shuffle():随机;

2.Comparable接口:比较对象的“大小”顺序;

 原则:

 int a=对象A.comparaTo(对象B)

如果A>B------>     a>0

如果A==B------>a=0

如果A>B----->a<0

 

 

3.Map接口:它是由K,V值组合而成,且K值不能重复;

常用的实现类:

HashMap:无序;

TreeMap:按照K值大小来进行输出;

LinkedHashMap:按照输入的先后顺序进行输出;

keyset():把Map里面的K值赋值给Set接口;

values():把Map里面的V值赋值给Collection接口;

注意事项:

get(Object key):返回key值所对应的value值;

 

 

4.、容器小结:

 Java Collections Framework

Set 无序,不可重复  /  List有序,可以重复  /  Map 

–两个类:JCF框架中还有两个很实用的公用类:CollectionsArrays

Collections提供了对一个Collection容器进行诸如排序、复制、查找和填充等方法//里面的方法基本都是静态方法,可以直接用collections.方法进行调用

Arrays 提供了数组的填充,查找,比较,排序等一系列的对数组的操作

//同样,Arrays里面的方法也大部分是静态方法,可以直接调用的

–六个接口

Collection//超级接口,是Set类和List类的父类

Set//接口,所有的方法都来自父类

List//接口,除了继承父类的方法外还有自己的额外方法

Map//键值对组成,键不能重复,值可以重复

Comparable//接口,只有一个方法,comparaTo()方法

Iterator//迭代器,用来遍历容器里面的元素很好用,每个实现collection的子类都默认实现该方法