java基础笔记

上传人:第*** 文档编号:34212394 上传时间:2018-02-22 格式:DOC 页数:22 大小:221.50KB
返回 下载 相关 举报
java基础笔记_第1页
第1页 / 共22页
java基础笔记_第2页
第2页 / 共22页
java基础笔记_第3页
第3页 / 共22页
java基础笔记_第4页
第4页 / 共22页
java基础笔记_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《java基础笔记》由会员分享,可在线阅读,更多相关《java基础笔记(22页珍藏版)》请在金锄头文库上搜索。

1、集合 1.0 集合特点: 1.1 Object 1.2 集合框架的工具类 1.3 泛型 1.4 集合使用技巧 1.5 foreach 集合练习 下边的挨个介绍一下吧:集合 集合类的由来:对象用于封装特有数据,对象多了就需要存储,如果对象的个数不确定,就使用集合容器进行存储。1.0 集合特点: 存储对象,长度可变.可进行增删改查1.1 Object |- Collection 接口1.方法: 添加boolean add(Object obj);boolean addAll(Collection coll)删除boolean remove(Object obj); 集合的 remove 会改变集合

2、的长度。boolean removeAll(Collection coll); 将两个集合中的相同元素从调用 removeAll 的集合中删除。void clear();判断boolean contains(Object obj);boolwan containsAll(Collection coll); 是否包含另外一个集合里面所有的元素。boolean isEmpty();判断集合中是否有元素。获取int size();Iterator iterator();取出元素的方式:迭代器迭代器: 对象必须依赖于具体的容器,因为每个容器的数据结构都不同。所以该迭代器对象是在容器中进行内部实现的。对

3、于使用容器者而言,具体的实现不重要,只要通过容器获取到该实现的迭代器的对象即可,也就是 iterator 方法。Iterator 接口就是对所有的 Collection 容器进行元素去除的公共接口。使用 Collcetion 中的 iterator()方法。调用集合中的迭代器方法,是为了获取集合中的迭代器对象。其他 boolean retainAll(Collection coll); 取交集。与 removeAll 相反,保留和指定集合相同的元素,而删除不同的元素Object toArray(); 将集合转成数组。|-List 有序(存入和取出的顺序一致),元素都有索引(角标),元素可以重复

4、。具有增删改查 特有常见方法:有一个共性特点就是都可以操作角标。添加void add( index,element)void add(index,collection);删除Object remove(index);修改Object set(index,element);获取:Object get(index) /List 特有的取出方式之一。int indexOf(object)int laseIndexOf(object)List subList(from,to)/包含头,不包含尾List 特有的取出方式代码:for(int x = 0;x list) 反转fill(List,T obj)

5、 将集合中的元素一次性全部替换shuffle(list); 随机把这些元素安放在任意位置上给非同步的集合加锁 synchronizedList(List list)使用的就是 Collection 借口中的 toArray 方法。集合转成数组:可以对集合中的元素操作的方法进行限定。不允许对其进行增删。toArray 方法需要传入一个指定类型的数组。长度该如何定义呢?如果长度小于集合的 size,那么该方法会创建一个同类型并和集合相同的 size 的数组。如果长度大于集合的 size,那么该方法就会使用指定的数组,存储集合中的元素,其他位置默认为 null。所以建议,最后长度就指定为集合的长度

6、size()1.3 泛型 泛型什么时候用:当操作的引用数据类型不确定的时候,就使用泛型,将要操作的引用数据类型传入即可。其实就是一个用于接收具体引用数据类型的参数范围。在程序中,只要用到了带有的类或者接口,就要明确传入的具体引用数据类型。将泛型定义在方法上:public void show(W str)当方法静态时,不能访问类上定义的泛型,如果静态方法使用泛型,只能将泛型定义在方法上。如:public static void show(Y obj);注意:泛型必须放在修饰符后面返回值的前面。泛型接口,将泛型定义在接口上。示例代码:public class GenericDemo2 /* par

7、am args*/public static void main(String args) Imple1 in1 = new Imple1();in1.show(haha);Imple2 in2 = new Imple2();in2.show(new Integer(5);interfaceInterpublic void show(T t);class Imple1 implements Interpublic void show(String str)System.out.println(show +str);/如果实现接口也不知道传什么类型的话就自定义classImple2 implem

8、ents Interpublic void show(Q q)System.out.println(show +q);泛型的擦除于补偿:(作为了解)注意细节:泛型技术是给编译器使用的技术,用于编译时期,确保了类型的安全。运行时,会将泛型去掉,生成的 class 文件中是不带泛型的,这个称为泛型的擦除。为什么擦除呢?因为为了兼容运行的类的加载器。泛型的补偿:在运行时,通过获取元素的类型进行转换动作。不用使用者再强制转换了。泛型的通配符:泛型的通配符:?未知类型。示例代码:importjava.util.ArrayList;importjava.util.Collection;importjava

9、.util.HashSet;importjava.util.Iterator;public class GenericDemo3 /* param args*/public static void main(String args) ArrayList al1 = new ArrayList();al1.add(haha);al1.add(xixi);HashSet hs = new HashSet();hs.add(new Integer(5);hs.add(new Integer(6);printCollection(al1);printCollection(hs);public stat

10、ic void printCollection(Collection al1) /如果打印的集合多,直接用父类的接口大集合作为参数类型/如果打印的多个集合的类型不同,可以用通配符?的形式来表示Iterator it = al1.iterator();while(it.hasNext()System.out.println(it.next();泛型类型限定:可以对类型进行限定:? extends E :接收 E 类型或者 E 的子类型对象。叫上限。? super E: 接收 E 类型或者 E 的父类型。 叫下限。上限示例代码:importjava.util.ArrayList;importjav

11、a.util.Collection;importjava.util.Iterator;import bean.Person;importbean.Student;importbean.Worker;public class GenericDemo4 public static void main(String args) ArrayList al1 = new ArrayList();al1.add(new Worker(工人 2,20);al1.add(new Worker(工人 4,40);ArrayList al2 = new ArrayList();al2.add(new Studen

12、t(小明 1,20);al2.add(new Student(小四 4,24);printCollection(al1);printCollection(al2);public static void printCollection(Collection al1) Iterator it = al1.iterator();while(it.hasNext()System.out.println(it.next();什么时候使用上限呢?一般在存储元素的时候都使用上限,因为这样取出都是按照上限类型来运算的,不会出现类型安全隐患。注意:迭代器的泛型百分之百和获取迭代器对象集合的泛型一致。什么时候使用

13、下限?通常对集合中的元素进行取出操作时,可以使用下限。下限代码示例:importjava.util.ArrayList;importjava.util.Collection;import java.util.Iterator;importbean.Person;importbean.Student;importbean.Worker;public class GenericDemo5 /* param args*/public static void main(String args) ArrayList al1 = new ArrayList();al1.add(new Worker(工人

14、1,10);al1.add(new Worker(工人 3,30);ArrayList al2 = new ArrayList();al2.add(new Student(小明 1,20);al2.add(new Student(小明 4,30);ArrayList p2 = new ArrayList();p2.add(new Person(人民 1,40);p2.add(new Person(人民 2,59);printCollection(al1);printCollection(p2);/ printCollection(al2);public static void printCol

15、lection(Collection al1) Iterator it = al1.iterator();while(it.hasNext()System.out.println(it.next();1.4 集合使用技巧集合查阅的一些技巧:需要唯一吗?需要:Set需要制定顺序:需要:TreeSet不需要:HashSet但是想要一个和存储一致的顺序(有序):LinkedHashSet不需要:List需要频繁增删吗?需要:LinkedList不需要:ArrayList如何记录每一个容器的结构和所属体系呢?看名字!List|-ArrayList|-LinkedListSet|-HashSet|-Tr

16、eeSet后缀名就是该集合的所属的体系。前缀名就是该集合的数据结构。看到 array:就要想到数组,就要想到查询快,有角标。看到 link:就要想到链表,就要像到增删快,就要想到 add get remove+first last 的方法看到 hash:就要想到哈希表,就要想到唯一性,就要想到元素需要覆盖 hashcode 方法和equals 方法。看到 tree:就要想到二叉树,就要想到排序,就要想到两个接口Comparable,Comparator。而且通常这些常用的集合容器都是不同步的。1.5 foreach foreach 语句:格式: for(类型 变量:Collection 集合|数组)传统 for 和高级 for 的区别?

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号