1、Collection超级接口:
(1)容器:是一个不需要设置长度和类型的小型数据库;
缺点:数据非持久性,每次运行都得加载;
(2)常用子接口:Set,List; Map接口跟超级接口没关系;
(3)容器与数组的区别:
数组在创建时就必须给定长度或元素而且必须是同种类型,而容器不必须特别说明;
2、Set接口:
常用的实现类:HashSet,TreeSet;
特点:无序不可重复;
它就没有get()方法,也没有排序的功能;
无序与随机的区别:
无序是第一次元素的顺序是无序,一旦确定下来了,就不能改变;而随机是每一次都要发生变化;
常用方法:add(),retainAll();new HashSet(Set s);iterator();
addAll(),size();
3、List接口:
常用的实现类:ArrayList,LinkedList;
特点:有序可重复;
常用方法:add(),get(),remove(int i),remove(Object o),
iterator(), contains(),clear(),size();
为什么会有两个add(),remove()?
因为有序有下标,默认是从0开始;小心:remove()删除时,如果遇到都是整型,此时没办法删除具体的元素值,会以下标形式来进行删除;
4、equals,hashcode():
equals:比较两个对象的值是否相等;
hashcode:判断两个对象是否指向同一个对象;
5、Iterator接口:
迭代器:把给定容器中所有元素遍历一遍,不能重复,有别于循环,所以在用它时要特别小心;
常用方法:
hasNext():判断下一个元素是否存在;
next():输出下一个元素的值;
remove:(用得很少,数据完整性不被破坏)
写法:回去看代码,PPT;
6、foreach:
语法:for(变量类型 变量名:数组/容器){};
优点:遍历极快,缺点:没有下标,不能排序;
7、泛型:
定义:指的是把复杂的类型变成唯一性,必须是类或者自定义的类型;
常见的方法有四种:
第一:可以使用来表示任意一种类型,只要主方法里面给它类型即可;
第二:泛型可以继承;,此时在方法里面给定的类型之后就不能变了;
第三:通配符; extends Collection>,此时在主方法里面可以给定任意一种超级接口下的实现类;
第四:泛型的方法;必须有无返回值的前面加; 例子:public void f(T x){}
常调用的方法:System.out.println(x.getClass().getName());
注意事项:记得对象不要搞错!
不懂回去看代码研究,再不懂明天带过来,一定要问;
8、打包和解包:
打包:把基础类型变成对象;
解包:把对象变成基础类型;
9、Map接口:
语法Map
常见的实现类:
HashMap:无序;
TreeMap:按照鍵值的大小排序;
LinkedHashMap:按照输入的顺序输出;
常用的方法:
put(Object K,Object V);
get(Object K);
keySet();//获取所有K值;
values();//获取所有V值;
containsKey(Object K)://K值在这个容器中是否存在;
containsValue(Object V)://V值在这个容器中是否存在;
10、comparable接口:
比较两个对象的“大小”;就是排序;
必须重写compareTo(Object o);
涉及到递归的问题,星期四讲;
11、Collections,Arrays:(算法)
(1)Collections:针对List接口(因为它有下标)
常用的方法:sort(List l);shuffle(List l);reverse();
(2)Arrays:针对的是数组;sort(数组类型);