java中的集合框架(上)
现实生活中:很多的事物凑在一起 有理数
数学中的集合:具有共同属性的事物的总体 整数
Java中的集合类:是一种工具类,就像是容器,储存任意数量的具有共同属性的对象
集合的作用
*在类的内部,对数据进行组织;
*简单而快速的搜索大数量的条目;
*有的集合接口,提供了一系列排列有序的元素,并且可以在序列中间快速的插入或者删除有关元素;
*有的集合接口,提供了映射关系,可以通过关键字9key
)去快速查找到对应的唯一对象,而这个关键字可以是任意类型。
与数组的对比——为何选择集合而不是数组
*数组的长度固定,集合长度可变
*数组只能通过下标访问元素,类型固定,而有的集合可以通过任意类型查找所映射的具体对象。
Collection接口&List接口简介
Collection接口
是List、Set和Queue接口的父接口
定义了可用于操作List、Set和Queue的方法——增删改查
List接口及其实现类——ArrayList
List是元素有序并且可以重复的集合,被称为序列
List可以精确的控制每个元素的插入位置,或删除某个位置元素
ArrayList——数组序列,是List的一个重要实现类
ArrayList底层是由数组实现的
学生选课
1.创建学生类和课程类,定义String类型的两个变量 一个 id 一个name 然后创建了一个含参构造器 使用this方法将新创建的参数赋予传入的值
2.添加课程
a.使用List储存 新建一个类 使用this 来new对象 ArrayList() 储存容器
创建一个课程对象,并调用add返回,添加备选课程
new对象 调用对象名的 add 来获取课程
b.add改成了addAll来添加数据 同样是使用强制转换将原来的Object来转换成相应的数据
3.课程查询
方法一.使用get方法来获取课程 然后使用for循环 获得学生课程 再打印输出就可以 在主方法中来使用方法
方法二.迭代器 再是使用迭代器来 wheil循环 通过hasnext来判断是否有下一个 然后在使用next方法来获取 知道hasnext判断没有下一值 结束循环 再打印输出
方法三. foreach循环来 输出课程 使用for循环 Object循环遍历集合 使用强制类型转换 因为类型屎 Object类 所以要使用强制类型转换来转换相应的类型
4.课程修改及删除
修改:使用set方法来修改对象
删除:
使用remove方法删除 先是使用get方法来读取指定内容中的元素 再 传入到remove方法中删除
removeAll方法
泛型
为什么要使用泛型。如果在集合里添加的类型不同的话 比如 一开始是int类型 后面传入的参数是 String类型的话 java就会抛出异常 会报错
泛型的使用的话 泛型只能储存同一种类型的才能使用 如果不是同一类型的话 就会抛出异常
可以在<>中定义指定类型 规定了指定类型 调用时就不需要使用强制类型转换
5.应用泛型管理课程
需要继承父类 一开始子类中是不可以使用无参构造方法 需要在父类中 先定义一个无参器 子类中才能使用无参构造方法 泛型不能使用基本数据类型 需要使用基本类型的包装类 才不会报错
再去调用方法 就可以打印输出 如果不是的话 就会报错
6.通过set集合管理课程
Set是不能使用get方法来读取里面的数量 因为Set集合是没有序列的 只能使用for循环 或者迭代器来 把他循环遍历出来
Set接口及其实现类——HashSet
Set是元素无序并且不可以重复的集合,被称为集
HashSet——哈希类,是Set的一个重要实现类
java中的集合框架(中)
5-1Map&HashMap简介
HashMap类
HashMap是Map的一个重要实现类,也是最常用的,基于哈希表实现
HashMap中的Entry对象是无序排列的
Key值和value值都要可以为null,但是一个HashMap只能有一个key值为null
的映射(key值不可重复)
7.使用Map添加学生
创造一个Scanner扫描器对象来获取学生从键盘中输入的值 在使用for循环来遍历 再使用get方法获取 学生的id 再使用for循环来判断是学生输入的数 是否为空 如果为空的话 就是用next获取学生输入的名字 再new对象来创建一个新的对象 需要传入两个参数 也是键值对 一个是传入一个 int类型和一个String类型 然后储存学生的信息
ketSet方法 返回Map中的所有“键”的Set集合
8.修改和删除map中的学生
修改:创建一个Scanner来获取学生中键盘中输入的值 在使用if语句来判断是否有学生的信息 还是跟Set一样使用remove来删除指定信息 先是运行前面的操作 如果显示有学生的信息 就使用remove语句来删除学生的信息
删除:创建一个Scanner来获取学生从键盘中输入的值 使用while循环来 然后使用next方法 再是使用if语句来判断是否为空 如果为空的话 就打印输出 如果显示没有的话 就需要创建一个学生id 就需要提供新的已经存在的学生姓名 再是使用Scanner来获取键盘上输入的值 调用put方法来修改信息
java中的集合框架(下)
判断set中课程是否存在
使用get方法选择指定位置是否是该课程 使用cantains方法来判断是否包含该课程 如果是的话就打印 然后再输出是否有相应课程 再看情况打印出 true或者false
new一个对象 然后再是创建一个Scaner获取从键盘中输入的值 再使用for循环来遍历 再是时使用next方法来到下一个 使用cantains方法来判断是否包含该课程
Collection工具类
是Java集合框架中,用来操作集合对象的工具类,也是Java集合框架的成员。sort()(排序)方法。
Collections工具类 是java集合框架中,用于操作对象的工具类 也是java集合框架的成员
其中有sort(排序)方法
泛型是不能使用基本数据类型的 如果使用的话就会报错 需要使用相应的包装类
需要插入十个100以内的不重复的整数 需要使用for循环来操作 为了保证不重复需要嵌套do...wheil循环 为了do...wheil循环中保证其中的数不重复 需要使用contains来处理
添加成功后需要使用foreach循环来去迭代每一个元素 然后打印输出 调用cCoolections的sort方法 ()括号内需要传入你想排序的变量名 然后再主方法new对象 然后调用方法Sort方法 再输出 这样的话就先排序好的顺序
Comparable和Comparator
Comparable接口——可比较的
1、实现该接口表示:这个类的实例可以比较大小,可以进行自然排序
2、定义了默认的比较规则。
3、其实现类需实现compareTo()方法。
4、compareTo()方法返回正数表示大,负数表示小,0表示相等。
Comparator接口——比较工具接口
1、用于定义临时比较规则,而不是默认比较规则
2、其实现类需要实现Compare()方法
3、Comparator和Comparable都是Java集合框架的成员
8.实现学生序列排序
实现Comparable接口 需要设为一样的泛型 需要使用相应的方法 如果小的话 就会输出正整数 如果大的话 就会输出负整数 如果相等的话就会输出0 然后先创建一个对象 要把名字改为字符串类型 id需要改成一千以内的正整数 再是调用该方法 然后输出 就会输出该结果 输出出来的 都是按照id的正整数来排列的 排序规则是 先数字后字母 数字0~9字母a~z的顺序 数字是先从第一位数字来排序的