一. 容器
1. 概念
保存多个对象的对象
2.功能
a) 与数组相同
b) 优点:自动增加或减小容器的长度
3.、容器(又叫集合):
重要的图:
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框架中还有两个很实用的公用类:Collections和Arrays
Collections提供了对一个Collection容器进行诸如排序、复制、查找和填充等方法//里面的方法基本都是静态方法,可以直接用collections.方法进行调用
Arrays 提供了数组的填充,查找,比较,排序等一系列的对数组的操作
//同样,Arrays里面的方法也大部分是静态方法,可以直接调用的
–六个接口
Collection//超级接口,是Set类和List类的父类
Set//接口,所有的方法都来自父类
List//接口,除了继承父类的方法外还有自己的额外方法
Map//键值对组成,键不能重复,值可以重复
Comparable//接口,只有一个方法,comparaTo()方法
Iterator//迭代器,用来遍历容器里面的元素很好用,每个实现collection的子类都默认实现该方法