J2SE第七章容器个人学习笔记.docx

上传人:scccc 文档编号:12692135 上传时间:2021-12-05 格式:DOCX 页数:9 大小:397.56KB
返回 下载 相关 举报
J2SE第七章容器个人学习笔记.docx_第1页
第1页 / 共9页
J2SE第七章容器个人学习笔记.docx_第2页
第2页 / 共9页
J2SE第七章容器个人学习笔记.docx_第3页
第3页 / 共9页
J2SE第七章容器个人学习笔记.docx_第4页
第4页 / 共9页
亲,该文档总共9页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《J2SE第七章容器个人学习笔记.docx》由会员分享,可在线阅读,更多相关《J2SE第七章容器个人学习笔记.docx(9页珍藏版)》请在三一文库上搜索。

1、第七章 .容器11361图 API 类图结构图1类 Collection 类3知识点 For Generic(泛型 ) Auto Boxing and Unboxing6接口 Collection Set List Map Iterator Comparable1. 容器java API 所提供的一系列类的实例,用于在程序中存放对象J2SDK所提供的容器API 位于 util 包内容器 API 的类图结构如图:容器API1.Collection 接口 (一个一个的装 ):定义了存取一组对象的方法,其子接口Set 和 List 分别定义了存储方式Set 中的数据对象没有顺序并且不可以重复。(两对

2、象互相equals 相等则重复)List 中的数据对象有顺序并且可以重复。2. Map 接口 (一对一对的装 ):定义了存储“ 键 (key) 值 (value) 映射对 ”的方法2. Collection 接口Collection 接口中所定义的方法:例举 12009-12-21 20:49:57-2010-3-28 13:10:54例举 202_Collection_2.avicontainer BasicContainer.javapublic class BasicContainer public static void main(String args) Collection c =

3、 new HashSet(); c.add("hello");c.add(new Name("f1","l1"); c.add(new Integer(100); c.remove("hello"); / 如果 equals 则去除public String toString() return firstName + " " + lastName; / 重写 equals 方法public boolean equals(Object obj) if (obj instanceof Name) N

4、ame name = (Name) obj;return (firstName.equals(name.firstName)&&(lastName.equals(name.lastName);return super.equals(obj);public int hashCode() return firstName.hashCode();class Name implements Comparable public int compareTo(Object o) private String firstName,lastName;Name n = (Name)o;public

5、 Name(String firstName, String lastName) int lastCmp =this.firstName=firstName;this.lastName=lastNpareTo(n.lastName);lastName;return(lastCmp!=0 ? lastCmp :public String getFirstName() return firstName;firstNpareTo(n.firstName);publicStringgetLastName()returnlastName;注意:重写equals 方法必须重新hashCode 方法当一个类

6、的某个对象当做索引,会使用hashcode 方法public boolean equals(Object obj) if (obj instanceof Name) Name name = (Name) obj;return (firstName.equals(name.firstName)&& (lastName.equals(name.lastName);return super.equals(obj);public int hashCode() return firstName.hashCode();3.Iterator接口(方便遍历)相当于指针、游标,每一种容器有自己的

7、Iterator接口例举注意: Iterator 对象的 remove 方法是在迭代过程中删除元素的唯一安全方法2010-3-28 14:44:34 - 2010-3-28 20:32:23知识点 1: JDK1.5 增强 For 循环4.Set接口Set 接口是 Collection重复。Set 容器可以与数学中J2SDK API中所提供的的子接口 ,Set 接口没有提供额外的方法”集合 ”的概念想对应。Set 容器类有HashSet,TreeSet等。,但实现Set接口的容器类中的元素是没有顺序的,且不可5. List 接口 类似数组 (大小自动增加 )List 接口是 Collectio

8、n 的子接口 ,实现 List 接口的容器类中的元素是有顺序的,而且可以重复。List 容器的元素都对应一个整数型的序号记载其在容器中的位置,可以根据序号存取容器总的元素。J2SDK所提供的List 容器类有ArrayList,LinkedList 等。例举List 常用算法:类 Java.util.Collections 提供了一些静态方法实现了机遇List 容器的一些常用算法。voidsort(List) 对 List 容器内的元素排序voidshuffle(List) 对 List 容器内的对象进行随机排序voidreverse(List) 对 List 容器内的对象进行逆序排序void

9、fill(List, object) 用一个特定的对象重写整个List 容器voidcopy(List dest , List src)将 src List 容器内容拷贝到dest List 容器intbinarySearch(List , Object) 对于顺序的 List 容器 ,采用二分搜索法查找特定对象例举6. Comparabl e 接口 2010-3-30 13:29:46实现了这个接口的类,他们之间的对象可以互相比较大小。如何选择数据结构衡量标准:读的效率和改的效率Array 读快改慢Linked 改快读慢Hash 两者之间7. Map 接口实现 Map 接口的类用来存储键-值

10、 对Msp 接口的实现类有HashMap 和 TreeMap 等Map 类中存储的键 -值对通过键来标识,所以键值不能重复Objectput (Object key , Object value);/ 将 key 的值改为 value(如果存在 key),并将对象返回Objectput (Object key);/ 通过 key找到 value 对象Objectremove(Objectkey); / 把 key 对应的 value 去掉booleancontainsKey(Object key); / 是不是包含 keybooleancontainsValue(Object value);/

11、 是不是包含 valueintsize(); / 装了多少对对象booleanisEmpty();/ 是不是空的voidputAll(Map t);/ 把另外一个 Map 里面的东西全部加进来voidclear(); / 清除知识点 2:自动打包解包(jdk1.5 以后 ) Auto Boxing and Unboxing打包:自动将基础类型转换为对象解包:自动将对象转换为基础类型例如: ContainerTestMap.javaimport java.util.*;System.out.println(m1.containsKey("one");public class

12、TestMap System.out.printlnpublic static void main(String args) /(m2.containsValue(new Integer(1);Map m1 = new HashMap();(m2.containsValue(1);Map m2 = new TreeMap();if(m1.containsKey("two") /m1.put("one",new Integer(1);/int i = (Integer)m1.get("two").intValue();m1.put(&q

13、uot;one", 1);int i = (Integer )m1.get("two");/系统不知道是否能/m1.put("two",new Integer(2);转换为 Integer 型,但是手动转换为Integer 型后系统自m1.put("two", 2);动解包为相对应的值/m1.put("three",new Integer(3);System.out.println(i);m1.put("three", 3);/m2.put("A",new Inte

14、ger(1);Map m3 = new HashMap(m1);m2.put("A", 1);m3.putAll(m2);/m2.put("B",new Integer(2);System.out.println(m3);m2.put("B", 2);System.out.println(m1.size();练习 1containerTestArgsWords.java显示每个单词重复个数!public class TestArgsWords /private static final Integer ONE = new Intege

15、r(1);private static final int ONE = 1;public static void main(String args) Map m = new HashMap();for (int i = 0; i < args.length; i+) /Integer freq = (Integer) m.get(argsi);int freq = (Integer) m.get(argsi) = null ? 0 : (Integer) m.get(argsi);/第一次为空值不能转换类型,需要这样写/m.put(argsi,(freq = null? ONE : ne

16、w Integer(freq.intValue() + 1);m.put(argsi, freq=0 ? ONE : freq + 1);(m.size() + " distinct words detected:");知识点3 Generic泛型jdk1.5指定特定类型ArrayList<E>(当然是在能指定的情况下)起因:jdk1.4以前的类型不明确:装入集合的类型都被当做Object 对待 ,从而失去自己的实际类型。从集合中取出时往往需要转换类型,效率低,容易产生错误。解决办法:在定义集合的时候同时定义集合中对象的类型例如: BasicGeneric.ja

17、va可以在定义Collection 的时候指定也可以在循环时使用Iterator 指定好处:增强程序的可读性和稳定性如 API 中有 ArrayList<E> 则说明可以指定特定类型例举 container BasicGeneric.javapublic class BasicGeneric public static void main(String args) List<String> c = new ArrayList<String>(); / 只能装 Sring 类型 泛型的使用 c.add("aaa");c.add("

18、bbb");c.add("ccc");for(int i=0; i<c.size(); i+) / 遍历String s = c.get(i);Collection<String> c2 = new HashSet<String>();c2.add("aaa"); c2.add("bbb"); c2.add("ccc");for(Iterator<String> it = c2.iterator(); it.hasNext(); ) String s = it.n

19、ext();class MyName implements Comparable<MyName> int age;public int compareTo(MyName mn) if(this.age > mn.age) return 1;else if(this.age < mn.age) return -1;else return 0;将前面讲的修改为泛型TestMap2.javapublic class TestMap2 public static void main(String args) Map<String, Integer> m1 = new

20、 HashMap<String , Integer>();m1.put("one", 1);m1.put("two", 2);m1.put("three", 3);if(m1.containsKey("two") /int i = (Integer)m1.get("two").intValue();int i = m1.get("two");2010-3-30 21:03:24TestArgsWords2 .javapublic class TestArgsWords2 private static final int ONE = 1; public static void main(String args) Map<String, Integer> m = new HashMap<String, Integer>();for (int i = 0; i < args.length; i+) if(!m.containsKey(argsi) m.put(argsi, ONE);else int freq = m.get(argsi);m.put(argsi, freq + 1);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1