集合

发布时间:2017-04-26 11:13:48   来源:文档文库   
字号:

第12章 集合

一、本章知识点

知识点1集合框架

集合框架图:

Iterable--迭代器,实现此接口,对象可以foreach,方法iterator()

Collection--集合,常用方法add,clear,remove,size,to

List--有序集合,方法除Collection以外的,getsetindexOf;实现类:

ArrayList LinkedList

Set无序集合,常用方法

Map键值对映射,键不能重复,根据唯一的键来查找值,键和值的类型需要指定。常用方法putcontainsKeygetsizeclearkeySetvaluesentrySet

知识点2List集合List

List集合的特点List是有序的Collection,可以根据下标操作元素,有序可重复

常用的方法:add();remove();set();get();indexOf();lastIndextOf();clear();

实现类:ListLinkedList

List:底层实现是动态数组

常用方法:add();add(int index,E elemnet);set();indexOf();remove();size();contains();

方法内参数及具体用法详见API

思考:ArrayList的区别

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

思考:ListLinkedList()的区别?

3.1.1案例3:演示、学员练习、讲解LinkedList

/*LinkedList中存放一组数据,“张三”、“李四”、“王五”、 aaa、“bbb遍历输出集合中的元素(并测试LinkedList的常用方法)

代码略

*/

知识点4:List集合的排序

通过使用ComparableComparator接口实现集合内元素的排序 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方法,并附带相应构造方法,及setget方法,实例化一个学员对象和一个老师对象。

学员——001 张三 20 100

老师 ——豪哥 30 高级

1、可以直接使用toString方法直接将对象全部打印出来,

2、使用上述Student类实现Comparable接口,将四个Student对象放入一个List中,可以通过成绩由高到低排序,如果成绩相同,按姓名自然顺序排列,然后执行排序并输出。(4分)

(学员信息 001 张三 20 100

003 李四 25 60

004 王五 21 70

007 赵六 24 65

知识点6Map容器

Map是一个存储键值对的对象,给定一个键可以查询得到他的值,键和值都是对象;键唯一,值可以重复;Map接口映射唯一键到值,Map接口常用方法:size();isEmpty();containsKey();containsValue();get();put();remove();values();entrySet();

方法及参数详见API

实现类:HashMap TreeMap

HashMap:基于哈希表的接口实现,允许使用null值、null(可将哈希表看成是初始长度值为16的一个数组)不保证映射的顺序,加入的顺序并不一定是读出的顺序

思考:如何Map容器不能够进行迭代,如何采用迭代输出集合中的元素

调用put()方法的时候会将keyvalue放到Entry这个静态内部类对象中,把entry对象添加到(哈希表)数组中,所以我们想获取map中所有的键值对,只要获取所有的entry对象,接下来调用Entry里的getkey(),getValue();即可获得所有的键值对

Key----哈希码----散列值----下标

假设Entry :Integer—学号 Student—张三这个人

根据学号计算出张三这个人应该保存在哪里(位置、下标),找到后,把张三这个人以及学号全部(Entry)保存在这个位置上。

重写hashCode()equals()方法,判断是否是同一个键

6.1.1案例7演示、练习、讲解HashMap

//Map中存放一组数据,“张三”、“李四”、“王五”、 aaa、“bbb(键自己定义)并采用迭代的方法输出集合中的元素

代码略

知识点7TreeMap及常用API

TreeMap通过红黑树实现Map接口,不允许有空值存在,提供按排序顺序(按关键字的升序排序)存储键值对的有效手段,同时允许快速检索;

TreeMap的键要么实现Comparable接口,要么在构造一个带有一个比较器的容器。

7.1.1案例8演示、练习、讲解

//随机产生503035的整数,统计每个数字出现的次数(TreeMap实现),输出时按照数字的降序排列,并且统计出现次数最多的数字和它的次数。

代码略

知识点8Set

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 20jack 11 21jay 12 20white 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》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式