《Java知识点总结系列》第十一章集合篇.docx
- 文档编号:3421851
- 上传时间:2022-11-22
- 格式:DOCX
- 页数:22
- 大小:262.05KB
《Java知识点总结系列》第十一章集合篇.docx
《《Java知识点总结系列》第十一章集合篇.docx》由会员分享,可在线阅读,更多相关《《Java知识点总结系列》第十一章集合篇.docx(22页珍藏版)》请在冰豆网上搜索。
《Java知识点总结系列》第十一章集合篇
知识点预览
集合的概念
集合中的接口
ArrayList
LinkedList
HashSet
TreeSet
HashMap
HashTable
TreeMap
集合关系
Collections工具类
JDK5.0及更高版本中增加的新特性
集合的概念
1.集合的概念
a)集合是Java中提供的一种类型,用于存储管理对象
b)为什么不用数组
i. 数组难于扩充
ii. 不好进行插入和删除
c)集合存储的真是对象吗?
存储的是对象的引用
d)集合的分类
List 有顺序可重复(有序是可重复的前提)例:
上课
Set 无序不可重复(无序注定不可重复)例:
大学老师
Map 键值对 keyvalue键值不可重复例:
角色演员表
2.集合中的几种接口
a) List接口
b)Set接口
c)Map接口
List接口
1.List接口
booleanadd(Objecto);
booleanisEmpty();
booleanremove(Objecto);
voidclear();
intsize();
Iteratoriterator();//遍历
Objectget(intindex);
ArrayList
1.ArrayList是List接口的实现类
importjava.util.*;
Listl=newArrayList();
从0开始
2.Iterator遍历
Iteratori=List.iterator();
publicbooleanhasNext();
publicObjectnext();//指针往下走一格
3.List排序
a)voidCollections.sort(List);//默认升序
自动排序阿拉伯字母1-9,字母:
a-z,A-Z,字符串比较首字母,相同比较第二个,以此类推。
b)对Student类进行排序//出现异常,不知道排序规则
c) Comparable接口
publicintcompareTo(){
当前对象排序的属性值<给定对象对应属性的值return负数
当前对象排序的属性值==给定对象对应属性的值return0
当前对象排序的属性值>给定对象对应属性的值return正数
负零正(升序)正零负(降序)
}
eg:
returnthis.age–age;
[java] viewplaincopy
1.package chp11.ex06;
2.
3.import java.util.ArrayList;
4.import java.util.Collections;
5.import java.util.Iterator;
6.import java.util.List;
7.
8./**
9. *
10. * @Author:
Wentasy
11. * @FullName:
TestList2.java
12. * @Description:
对象排序 实现Comparable接口 重写compareTo方法
13. * @Create Date:
2012-8-15
14. */
15.class Student implements Comparable{
16. private String name;
17. private int age;
18.
19. public Student(String name,int age){
20.
21. this.name = name;
22. this.age = age;
23. }
24.
25. public void setName(String name){
26. this.name = name;
27. }
28.
29. public String getName(){
30. return this.name;
31. }
32.
33. public void setAge(int age){
34. this.age = age;
35. }
36.
37. public int getAge(){
38. return this.age;
39. }
40.
41. /*
42. public int compareTo(Object o) {
43. 当前对象排序的属性值 < 给定对象对应属性的值 return 负数
44. 当前对象排序的属性值 == 给定对象对应属性的值 return 0
45. 当前对象排序的属性值 > 给定对象对应属性的值 return 正数
46. }
47.
48.
49.
50.
51. public int compareTo(Object o){
52. Student s = (Student)o;
53. return pareTo(s.getName());
54.
55. }
56.
57. */
58.
59.
60. public int compareTo(Object o){
61. Student s = (Student)o;
62. if(this.age 63. else if(this.age == s.age)return 0; 64. else return 1; 65. } 66. 67. 68. 69. /* 70. public int compareTo(Object o) { 71. Student s = (Student)o; 72. return this.age-s.age; 73. } 74. */ 75.} 76. 77.public class TestList2 { 78. public static void main(String args[]){ 79. Student s1 = new Student("sun2",20); 80. Student s2 = new Student("sun1",10); 81. Student s3 = new Student("sun3",30); 82. List l = new ArrayList(); 83. l.add(s1); 84. l.add(s2); 85. l.add(s3); 86. 87. Collections.sort(l); 88. 89. Iterator i = l.iterator(); 90. while(i.hasNext()){ 91. Student s = (Student)i.next(); 92. System.out.println(s.getName()); 93. } 94. } 95.} d) String+8种包装类默认已经实现了Comparable接口 e)List排序原理 Comparable接口达成了使用者和提供者之间的约定 4.List接口的实现类 a)ArrayList和LinkedList b)ArrayList和Vector Set接口 1.Set接口 booleanadd(Objecto); booleanisEmpty(); booleanremove(Objecto); voidclear(); intsize(); Iteratoriterator();//遍历 HashSet 1. HashSet: 无顺序 2. HashSet: 不可重复 元素对应的对象的内容不可重复 3.HashSet怎样存储对象 a)Object类中定义了publicinthashCode(); b)HashSet怎样存储对象 i. 调用hashCode ii. 当hashCode值满足条件时,再调用equals方法 c) hashCode: 决定一个对象放在哪个桶(内存)里 d)对象内容相同,hashCode值相同,放在同一桶里,把重复数据过滤掉(覆盖) 4.hashCode方法的覆盖建议 publicinthashCode(){ returnage; } publicinthashCode(){ returnname.hashCode()&1;//字符串已经覆盖了hashCode() } TreeSet 1. SortedSet接口的实现类 2. 可以排序,不可重复 3. 元素必须实现Comparable接口 4. 所有的Set接口的实现类对重复元素的处理不同 [java] viewplaincopy 1.package chp11.ex11; 2. 3.import java.util.Iterator; 4.import java.util.Set; 5.import java.util.TreeSet; 6. 7. 8./** 9. * 10. * @Author: Wentasy 11. * @FullName: TestSet2.java 12. * @Description: TreeSet compareTo方法的重写优化 13. * @Create Date: 2012-8-15 14. */ 15.class Student implements Comparable{ 16. private String name; 17. private int age; 18. 19. public Student(String name,int age){ 20. 21. this.name = name; 22. this.age = age; 23. } 24. 25. public void setName(String name){ 26. this.name = name; 27. } 28. 29. public String getName(){ 30. return this.name; 31. } 32. 33. public void setAge(int age){ 34. this.age = age; 35. } 36. 37. public int getAge(){ 38. return this.age; 39. } 40. 41. public int compareTo(Object o){ 42. Student s = (Student)o; 43. if(this.age! =s.age)return this.age - s.age; 44. else return pareTo(s.name); 45. } 46. 47. 48.} 49. 50.public class TestSet2 { 51. public static void main(String args[]){ 52. Student s1 = new Student("sun2",20); 53. Student s2 = new Student("sun1",30); 54. Student s3 = new Student("sun3",30); 55. Student s4 = new Student("sun3",30); 56. 57. Set set = new TreeSet(); 58. set.add(s1); 59. set.add(s2); 60. set.add(s3); 61. set.add(s4); 62. 63. Iterator i = set.iterator(); 64. while(i.hasNext()){ 65. Student s = (Student)i.next(); 66. System.out.println(s.getName()); 67. } 68. } 69.} 5. TreeSet过滤重复是以compareTo方法中判断两个内容是否相等作为判断重复数据的依据 Collection接口 Map接口 java.util.Map接口 key不可以重复,value可以重复 put(Objectket,Objectvalue); get(Obejctkey); remove(Objectkey); clear(); isEmpty(); size(); HashMap 1. HashMap的常规使用 Mapm=newHashMap(); 2. HashMap的key也是通过Hash算法过滤重复数据 覆盖equals方法和hashCode 2. Map的key一般都应用String 3.Map的遍历 a) 值遍历 [java] viewplaincopy 1.package chp11.ex13; 2. 3.import java.util.Collection; 4.import java.util.Iterator; 5.import java.util.Map; 6.import java.util.TreeMap; 7. 8./** 9. * 10. * @Author: Wentasy 11. * @FullName: TestMap1.java 12. * @Description: 值遍历 13. * @Create Date: 2012-8-15 14. */ 15.public class TestMap1 { 16. public static void main(String args[]){ 17. 18. Map m = new TreeMap(); 19. m.put("key1", "value1"); 20. m.put("key3","value2"); 21. m.put("key1", "value4"); 22. m.put("key2", "value2"); 23. 24. Collection c = m.values(); 25. Iterator i = c.iterator(); 26. while(i.hasNext()){ 27. System.out.println(i.next()); 28. } 29. } 30.} b)键遍历 [java] viewplaincopy 1.package chp11.ex13; 2. 3.import java.util.Iterator; 4.import java.util.Map; 5.import java.util.Set; 6.import java.util.TreeMap; 7. 8./** 9. * 10. * @Author: Wentasy 11. * @FullName: TestMap2.java 12. * @Description: 键遍历 13. * @Create Date: 2012-8-15 14. */ 15.public class TestMap2 { 16. public static void main(String args[]){ 17. 18. Map m = new TreeMap(); 19. m.put("key1", "value1"); 20. m.put("key3","value2"); 21. m.put("key1", "value4"); 22. m.put("key2", "value2"); 23. 24. Set s = m.keySet(); 25. Iterator ii = s.iterator(); 26. while(ii.hasNext()){ 27. System.out.println(ii.next()); 28. } 29. 30. } 31.} c)键值遍历 [java] viewplaincopy 1.package chp11.ex14; 2. 3.import java.util.HashMap; 4.import java.util.Hashtable; 5.import java.util.Iterator; 6.import java.util.Map; 7.import java.util.Set; 8. 9./** 10. * 11. * @Author: Wentasy 12. * @FullName: TestMap1.java 13. * @Description: 键值遍历 14. * @Create Date: 2012-8-15 15. */ 16.public class TestMap1 { 17. public static void main(String args[]){ 18. 19. Map m = new HashMap(); 20. m.put("key1", "value1"); 21. m.put("key2", "value2"); 22. m.put("key3","value2"); 23. m.put("key1", "value4"); 24. 25.// 26.// Set s = m.keySet(); 27.// Iterator ii = s.iterator(); 28.// while(ii.hasNext()){ 29.// Object key = ii.next(); 30.// System.out.println(key+" = "+m.get(key)); 31.// } 32. 33. // 错误的遍历方式 每调用一次next 指针往前移 34. Set s = m.keySet(); 35. Iterator ii = s.iterator(); 36. while(ii.hasNext()){ 37. System.out.println(ii.next()+" = "+m.get(ii.next())); 38. } 39. 40. 41. 42. 43. } 44.} TreeMap 1.TreeMap可以对key应用排序 2. TreeMap的key是通过Comparable接口过滤重复排序 3.Map的key一般都应用String HashMap与HashTable 集合关系(5.0以前) Collections工具类 Object
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java知识点总结系列 Java 知识点 总结 系列 第十一 集合
![提示](https://static.bdocx.com/images/bang_tan.gif)