目录
6-5 应用Collections.sort()实现List排序
第四章 Java中的集合框架(上)
4-1 Java中的集合框架概述
4-2 Collection接口和List接口简介
4-3 学生选课--创建学生类和课程类
package com.imooc.collection;
import java.util.HashSet;
import java.util.Set;
/**
* 学生类
* @author Administrator
*
*/
public class Student {
public String id;
public String name;
public Set<Course> courses;
public Student(String id, String name) {
this.id = id;
this.name = name;
this.courses = new HashSet<Course>();
}
}
package com.imooc.collection;
/**
* 课程类
* @author Administrator
*
*/
public class Course {
public String id;
public String name;
public Course(String id, String name) {
this.id = id ;
this.name = name;
}
public Course() {
}
}
添加课程、查询课程、课程修改、课程删除:
package com.imooc.collection;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
/**
* 备选课程类
* @author Administrator
*
*/
public class ListTest {
/**
* 用于存放备选课程的List
*/
public List coursesToSelect;
public ListTest() {
this.coursesToSelect = new ArrayList();
}
/**
* 用于往coursesToSelect中添加备选课程
*/
public void testAdd() {
//创建一个课程对象,并通过调用add方法,添加到备选课程List中
Course cr1 = new Course("1" , "数据结构");
coursesToSelect.add(cr1);
Course temp = (Course) coursesToSelect.get(0);
System.out.println("添加了课程:" + temp.id + ":" + temp.name);
Course cr2 = new Course("2", "C语言");
coursesToSelect.add(0, cr2);
Course temp2 = (Course) coursesToSelect.get(0);
System.out.println("添加了课程:" + temp2.id + ":" + temp2.name);
coursesToSelect.add(cr1);
Course temp0 = (Course) coursesToSelect.get(2);
System.out.println("添加了课程:" + temp.id + ":" + temp.name);
//以下方法会抛出数组下标越界异常
// Course cr3 = new Course("3", "test");
// coursesToSelect.add(4, cr3);
Course[] course = {new Course("3", "离散数学"), new Course("4", "汇编语言")};
coursesToSelect.addAll(Arrays.asList(course));
Course temp3 = (Course) coursesToSelect.get(2);
Course temp4 = (Course) coursesToSelect.get(3);
System.out.println("添加了两门课程:" + temp3.id + ":" +
temp3.name + ";" + temp4.id + ":" + temp4.name);
Course[] course2 = {new Course("5", "高等数学"), new Course("6", "大学英语")};
coursesToSelect.addAll(2, Arrays.asList(course2));
Course temp5 = (Course) coursesToSelect.get(2);
Course temp6 = (Course) coursesToSelect.get(3);
System.out.println("添加了两门课程:" + temp5.id + ":" +
temp5.name + ";" + temp6.id + ":" + temp6.name);
}
/**
* 取得List中的元素的方法
* @param args
*/
public void testGet() {
int size = coursesToSelect.size();
System.out.println("有如下课程待选:");
for(int i= 0 ; i < size; i++) {
Course cr = (Course) coursesToSelect.get(i);
System.out.println("课程:" + cr.id + ":" + cr.name);
}
}
/**
* 通过迭代器来遍历List
* @param args
*/
public void testIterator() {
//通过集合的iterator方法,取得迭代器的实例
Iterator<Course> it = coursesToSelect.iterator();
System.out.println("有如下课程待选(通过迭代器访问):");
while(it.hasNext()) {
Course cr = it.next();
System.out.println("课程:" + cr.id + ":" + cr.name);
}
}
/**
* 通过for each方法访问集合元素
* @param args
*/
public void testForEach() {
System.out.println("有如下课程待选(通过for each访问):");
for (Object obj : coursesToSelect) {
Course cr = (Course) obj;
System.out.println("课程:" + cr.id + ":" + cr.name);
}
}
/**
* 修改List中的元素
* @param args
*/
public void testModify() {
coursesToSelect.set(4, new Course("7", "毛概"));
}
/**
* 删除List中的元素
* @param args
*/
public void testRemove() {
// Course cr = (Course) coursesToSelect.get(4);
System.out.println("即将删除4位置和5位置上的课程!");
Course[] courses = {(Course) coursesToSelect.get(4), (Course) coursesToSelect.get(5)};
coursesToSelect.removeAll(Arrays.asList(courses));
// coursesToSelect.remove(4);
System.out.println("成功删除课程!");
testForEach();
}
/**
* 往List中添加一些奇怪的东西
* @param args
*/
public void testType() {
System.out.println("能否往List中添加一些奇怪的东西呢!?");
coursesToSelect.add("我不是课程,我只是一个无辜的字符串!!");
}
public static void main( String[] args) {
ListTest lt = new ListTest();
lt.testAdd();
lt.testType();
lt.testForEach();
// lt.testGet();
// lt.testIterator();
// lt.testForEach();
// lt.testModify();
// lt.testForEach();
// lt.testRemove();
}
}
4-4 学生选课--添加课程(一)
4-5 学生选课--添加课程(二)
4-6 学生选课--课程查询
4-7 学生选课--课程修改
4-8 学生选课--课程删除
4-9 学生选课--应用泛型管理课程(一)
4-10 学生选课--应用泛型管理课程(二)
4-11学生选课--通过Set集合管理课程
第五章 Java中的集合框架(中)
5-1 Map&HashMap
5-2 使用Map添加学生
5-3 删除Map中的学生
5-4 修改Map中的学生
importjava.util.HashMap;
public class MapTest { //创建类名
/**
*用来承装学生类型对象*/
public Map<String, Student> students;
/** I
*在构造器中初始化students属性*/
public MapTest(){
this.students =new HashMap<String,Student>();}
/**
*测试添加:输入学生ID,判断是否被占用
*若未被占用,则输入姓名,创建新学生对象,并且*添加到students中*/
public void testPut() {
//创建一个Scanner对象,用来获取输入的学生ID和姓名 Scanner console=new Scanner(System.in); inti=0;
while (i < 3) {
System.out.println("请输入学生ID:"); StringID=consolenext();//判断该ID是否被占用
Studentst=students.get(ID); if(st == null) {
//提示输入学生姓名
System.out.println("请输入学生姓名:"); String name=consolenext();//创建新的学生对象
Student newStudent=newStudent(IDname)//通过调用students的put方法,添加ID-学生映射 students.put(ID,newStudent);
System.outprintln("成功添加学生:"+students.get(ID).name); i++;
} else {
System.out.println("该学生ID已被占用!");
continue;
}
}
}
/**
*测试Map的keySet方法*/
public void testKeySet(){
//通过keySet方法,返回Map中的所有“键”的Set集合 Set<String>
keySet=students.keySet();
//取得students的容量
System.out.println("总共有:"+students.size()+"个学生!")
//遍历keySet,取得每一个键,再调用get方法取得每个键对应的value for(String stuId: keySet){
Student st=students.get(stuId);
if (st!= null)
System.out.println("学生:"+st.name);
} }
public static void main(Stringl]args){
MapTestmt=new MapTest();
I mt.testPut();
mt.testKeySet();
}
public void testRemove(){
//获取从键盘输入的待删除学生ID字符串
Scanner console=new Scanner(System.in)
while (true) {
//提示输入待删除的学生的ID
System.out.printIn("请输入要删除的学生ID!");
String ID=consolenext();
//判断该ID是否有对应的学生对象 Student st=students.get(ID);
if(st== null) {
//提示输入的ID并不存在
System.out.println("该ID不存在!");
}}}
continue;
}
student.remove(ID);
System.out.println("成功删除学生:" +st.name);
break;
}
/**
*通过entrySet方法来遍历Map*/
public void testEntrySet(){
//通过entrySet方法,返回Map中的所有键值对
Set<Entry<String,Student>>entrySet=studentsentrySet()
for(Entry<String,Student> entryentrySet){
System.out.println("取得键:"+entrygetKey();
System.out.println("对应的值为:"+entry.getValue().name);
public static void main(String]args)
MapTestmt=newMapTest();
mt.testPut();
mt.testKeySet();
mt.testRemove();
mt.testEntrySet();
}
public void testModify() {
//提示输入要修改的学生ID
System.outprintln("请输入要修改的学生ID:");
//创建一个Scanner对象,去获取从键盘上输入的学生ID字符串
Scanner console=new Scanner(System.in); while (true){
//取得从键盘输入的学生ID
String stuID=consolenext();
//从students中查找该学生ID对应的学生对象
Student student=students.get(stuID);
if(student == null) {
System.outprintln("该ID不存在!请重新输入!");
continue;
//提示当前对应的学生对象的姓名
System.out.println("当前该学生ID,所对应的学生为:"+studentname);//提示输入新的学生姓名,来修改已有的映射
System.outprintln("请输入新的学生姓名:");
String name=consolenext();
Student newStudent=newStudent(stuIDname)
students.put(stuID,newStudent);
System.outprintln("修改成功!");
break;}
public static void main(String]args)
MapTestmt=newMapTest();
mt.testPut();
mt.testKeySet();
mt.testRemove();
mt.testEntrySet();
mt.test.Modify();
mt.test.EnterySet();
}
}
第六章 Java中的集合框架(下)
6-1 判断List中课程是否存在
*测试List的contains方法*1
public void testListContains(){//取得备选课程序列的第0个元素
Course course=coursesToSelectget(0);
//打印输出coursesToSelected是否包含course对象 System.outprintln("取得课程:"+coursename);
System.outprintln("备选课程中是否包含课程:"+course.name+""+
coursesToSelect.contains(course));
}
public static void main(Stringl] args){
SetTestst=new SetTest(); st.testAdd();
st.testForEach();//创建一个学生对象
Student student=new Student("1""小明");
System.outprintln("欢迎学生:"+student.name+"选课!");//创建一个Scanner对象,用来接收从键盘输入的课程ID Scanner console=new Scanner(System.in);
for(inti=0;i<3;i++){
System.outprintln("请输入课程ID");
// student.courses.add(null);
// student.courses.add(cr);
}
) I
st.testForEachForSet(student)
public void testForEachForSet(Student student){
//打印输出,学生所选的课程!
System.out.println("共选择了:"+studentcourses.size()+"门课程!"); for (Course cr:student.courses){
System.outprintln("选择了课程:"+cr.id+":"+cr.name);
}
6-2 判断Set中课程是否存在
6-3 获取List中课程的位置
System.out.println("备选课程中是否包含课程:"+course.name+""+
coursesToSelect.contains(course));//提示输入课程名称
System.out.println("请输入课程名称:");
String name=consolenext();
//创建一个新的课程对象,ID和名称,与course对象完全一样
Course course2=newCourse();
course2.name=name;
System.outprintln("新创建课程:"+course2.name);
System.out.println("备选课程中是否包含课程:"+course2.name+""+
coursesToSelectcontains(course2));//通过indexOf方法来取得某元素的索引位置 if(coursesToSelect.contains(course2))
System.out.println("课程:"+course2.name+I"的索引位置为:"+
coursesToSelect.indexOf(course2));}
6-4 判断Map中是否包含指定的key和value
/**
*测试Map中,是否包含某个Key值或者某个Value值
*/
public void testContainsKeyOrValue(){
//提示输入学生id
System.outprintln("请输入要查询的学生ID:");
Scanner console=new Scanner(System.in);
String id=consolenext();
//在Map中,用containsKey()方法,来判断是否包含某个Key值
System.out.println("您输入的学生ID为:"+id+",在学生映射表中是否存在:
+students.containsKey(id));
if(students.containsKey(id))
System.outprintln("对应的学生为:"+students.get(id).name);//用containsValue()方法,来判断是否包含某个Value值}
public static void main(String]args)
MapTestmt=newMapTest();
mt.testContainsKeyOrValue();
}}
6-5 应用Collections.sort()实现List排序
public void testSort1(){
List<Integer> integerList=newArrayList<Integer>()//插入十个100以内的不重复随机整数 Randomrandom=newRandom()
Integer k;
for(inti=0;i<10;i++){
do {
k=randomnextInt(100);
}while(integerListcontains(k));
integerList.add(k); I
System.out.println("成功添加整数:"+ k);
}
System.out.println("-------------排序前--------------");
for (Integer integer:integerList){
System.out.println("元素:"+integer);
}
Collections.sort(integerList);
System.out.println("----------------排序后-------------------"); for (Integer integer:integerList){
System.out.println("元素:"+integer);
}
}
public static void main(Stringl]args){
CollectionsTest ct=new CollectionsTest();
ct.testSort1();}
}
/**
*2.对String泛型的List进行排序;
*/创建String泛型的List,添加三个乱序的String元素,*调用sort方法,再次输出排序后的顺序
public void testSort2() {
List<String> stringList=newArrayList<String>();
stringListadd("microsoft");
stringList.add("google");
stringList.add("lenovo");
System.out.println("------------排序前-------------"); I
for (String string:stringList)
{
System.out.println("元素:"+ string);
}
}
System.out.println("----------------排序后-------------------");
for (Integer integer:integerList) {
System.out.println("元素:"+integer);
6-6 尝试对学生序列排序
/**
*3.对其他类型泛型的List进行排序,以Student为例。
*/
public void testSort3(){
List<Student> studentList=newArrayList<Student>()
studentListadd(newStudent(1+"""小明"));
studentListadd(new Student(2 +"""小红"))
studentListadd(new Student(3+"","小兰"));
System.out.println("--------------排序前---------------");
for
(Student student:studentList){
System.out.println("学生:"+studentname);
Collections.sort(studentList);
}
6-7 Comparable&Compartator
6-8 实现学生序列排序
/**
*3.对其他类型泛型的List进行排序,以Student为例。
*/
public void testSort3(){
List<Student> studentList=newArrayList<Student>()
Randomrandom=newRandom();
studentListadd(newStudent(randomnextInt(1000)+"" "Mike"));
studentListadd(new Student(randomnextInt(1000) +"", "Angela"));
studentList.add(new Student(random.nextInt(1000) + "", "Lucy"));
System.out.println("--------------排序前---------------");
for(Student student:studentList){
System.outprintln("学生:"+student.id+":"+student.name);
}
Collections.sort(studentList);
}
System.out.println("----------------排序后------------------");
for (Student student:studentList){
System.outprintln("学生:"+student.id +":"+ studentname);
}
public static void main(String[]args){
CollectionsTest ct=new CollectionsTest();
// ct.testSort1();
ct.testSort2();
ct.testSort3();
}
}