一、本章知识点
● 知识点1:集合框架
集合框架图:
Iterable--迭代器,实现此接口,对象可以foreach,方法iterator()
Collection--集合,常用方法add,clear,remove,size,to
List--有序集合,方法除Collection以外的,get、set、indexOf;实现类:
ArrayList LinkedList
Set—无序集合,常用方法
Map—键值对映射,键不能重复,根据唯一的键来查找值,键和值的类型需要指定。常用方法put,containsKey,get,size,clear,keySet,values,entrySet
● 知识点2:List集合和List
List集合的特点:List是有序的Collection,可以根据下标操作元素,有序可重复
常用的方法:add();remove();set();get();indexOf();lastIndextOf();clear();
实现类:List和LinkedList
List:底层实现是动态数组,
常用方法:add();add(int index,E elemnet);set();indexOf();remove();size();contains();
方法内参数及具体用法详见API
思考:Array和List的区别?
2.1.1【案例1:演示、讲解】ArrayList存放String
/*在List中存放一组数据,“张三”、“李四”、“王五”、“张三”、“aaa”、“aaa”、“bbb”,删除相同的元素,遍历输出数组中的元素
代码略
*/
2.1.2【案例2: 练习、讲解】ArrayList存放对象
// 定义一个List操作类,使用List存放学生信息,实现增删改查和遍历(学号、
姓名、班级、考分、年龄)
代码略
● 知识点3:LinkedList
LinkedList集合的特点:底层是链表结构
常用方法:除继承外 addFirst();addLast();removeFirst();removeLast();pollFirst();pollLast()等
方法内的具体参数及详细用法详见API
思考:List与LinkedList()的区别?
3.1.1【案例3:演示、学员练习、讲解】LinkedList
/*在LinkedList中存放一组数据,“张三”、“李四”、“王五”、 “aaa”、“bbb”,遍历输出集合中的元素(并测试LinkedList的常用方法)
代码略
*/
● 知识点4:List集合的排序
通过使用Comparable和Comparator接口实现集合内元素的排序 Collections类的常用方法sort();详见API
4.1.1【案例4:演示、学员练习、讲解】集合的排序
/* List对象中存放多个Person对象(此对象包含: Id,名字,年龄)。按Person的年龄从小到大排序,假设年龄相等的话再按名字的大小来排序。求出年龄最大的那个学生信息。
代码略
*/
● 知识点5:List集合的练习
5.1.1【案例5:演示、学员练习、讲解】集合的排序
定义Person类包含成员String姓名,int年龄;
定义Student类继承于Person类,私有成员有int学号,成绩Score;
定义Teacher类继承于Person类,包含私有成员String level等级;
分别重写它们的toString方法,并附带相应构造方法,及set、get方法,实例化一个学员对象和一个老师对象。
学员——001 张三 20 100
老师 ——豪哥 30 高级
1、可以直接使用toString方法直接将对象全部打印出来,
2、使用上述Student类实现Comparable接口,将四个Student对象放入一个List中,可以通过成绩由高到低排序,如果成绩相同,按姓名自然顺序排列,然后执行排序并输出。(4分)
(学员信息 001 张三 20 100
003 李四 25 60
004 王五 21 70
007 赵六 24 65)
● 知识点6:Map容器
Map是一个存储键值对的对象,给定一个键可以查询得到他的值,键和值都是对象;键唯一,值可以重复;Map接口映射唯一键到值,Map接口常用方法:size();isEmpty();containsKey();containsValue();get();put();remove();values();entrySet();
方法及参数详见API
实现类:HashMap TreeMap
HashMap:基于哈希表的接口实现,允许使用null值、null键(可将哈希表看成是初始长度值为16的一个数组),不保证映射的顺序,加入的顺序并不一定是读出的顺序
思考:如何Map容器不能够进行迭代,如何采用迭代输出集合中的元素
调用put()方法的时候会将key和value放到Entry这个静态内部类对象中,把entry对象添加到(哈希表)数组中,所以我们想获取map中所有的键值对,只要获取所有的entry对象,接下来调用Entry里的getkey(),getValue();即可获得所有的键值对
Key----哈希码----散列值----下标
假设Entry
根据学号计算出张三这个人应该保存在哪里(位置、下标),找到后,把张三这个人以及学号全部(Entry
重写hashCode()和equals()方法,判断是否是同一个键
6.1.1【案例7:演示、练习、讲解】HashMap
//在Map中存放一组数据,“张三”、“李四”、“王五”、 “aaa”、“bbb”,(键自己定义)并采用迭代的方法输出集合中的元素
代码略
● 知识点7:TreeMap及常用API
TreeMap通过红黑树实现Map接口,不允许有空值存在,提供按排序顺序(按关键字的升序排序)存储键值对的有效手段,同时允许快速检索;
TreeMap的键要么实现Comparable接口,要么在构造一个带有一个比较器的容器。
7.1.1【案例8:演示、练习、讲解】
//随机产生50个30到35的整数,统计每个数字出现的次数(TreeMap实现),输出时按照数字的降序排列,并且统计出现次数最多的数字和它的次数。
代码略
● 知识点8:Set
Set容器是一个不包含重复元素的Collectoin,最多允许一个null,
特点:无序且不可重复。常用方法详见API
常见实现类:HashSet,TreeSet
HashSet:使用哈希表进行存储,大多数时候使用Set集合时,就是使用这个实现类。Hashset判断一个元素是否相等时:通过HashCode()方法和equals()方法,两者都返回true时,判断相等。
HashSet常见方法详见API
TreeSet: 使用树结构进行存储,提供按顺序排序,访问和检索很快;适合用于存储需要快速检索排序信息的情况;结合TreeMap,思考TreeSet中存放的元素的特点。
8.1.1【案例9:演示、练习、讲解】HashSet
//HashSet容器中存放多个Person(id name age)对象,遍历输出容器中所有的元素,判断容器中是否存在某个具体的元素;
如:lucy 10 20;jack 11 21;jay 12 20;white 13 22
判断white 13 22这个对象是否存在
代码略
8.1.2【案例10:演示、练习、讲解】TreeSet
//用TreeSet存储以下数据:
“xiaoqiang”、“zhangsan”、“lisi”、“xiaohua”、 “ruhua”、 “wangcai”
要求按照字符串的长度进行排序后再存储(如果长度相同,则按字符串的自然顺序排序)
代码略
● 知识点9:今日内容总结
● 集合框架
● List及其实现类
● Map及其实现类
● Set及其实现类
● 知识点10:作业布置
1.0 创建购物车实体类,模拟购物车功能
需求:
1) 添加商品到购物车(输入商品的编号和数量)
2) 删除商品(删除购物车中的指定购物项)
3) 修改商品(修改商品的数量)
4) 显示所购买的商品信息(按购买商品的总价进行升序显示)
本文来源:https://www.2haoxitong.net/k/doc/f39500a3cd22bcd126fff705cc17552707225efa.html
文档为doc格式