Java中的集合框架(下)
- 学生选课——判断Set中课程是否存在
package com.imooc.collection; import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; import java.util.List; import java.util.Scanner; public class SetTest { public List<Course>coursesToSelect; public SetTest(){ coursesToSelect=new ArrayList<Course>(); } //用于往CourseToSelect中添加备选课程 public void testAdd(){ //创建一个课程对象,并通过调用add方法,添加到备选课程List中 Course c=new Course("1","数据结构"); coursesToSelect.add(c); Course temp=(Course) coursesToSelect.get(0); //System.out.println("添加了一门课程"+temp.id+":"+temp.name); Course c1=new Course("2","C语言"); coursesToSelect.add(0, c1); Course temp1=(Course) coursesToSelect.get(0); //System.out.println("添加一门课程:"+temp1.id+":"+temp1.name); Course cq=new Course("1","数据结构"); coursesToSelect.add(cq); Course temp0=(Course) coursesToSelect.get(2); //System.out.println("添加了一门课程"+temp0.id+":"+temp0.name); /*Course c2=new Course("2","Test1"); CourseToSelect.add(4, c2);*/ Course[] course={new Course("3","离散数学"),new Course("4","汇编语言")}; coursesToSelect.addAll(Arrays.asList(course)); Course temp2=(Course) coursesToSelect.get(2); Course temp3=(Course) coursesToSelect.get(3); //System.out.println("添加了两门课程:"+temp2.id+":"+temp2.name+";"+temp3.id+":"+temp3.name); Course[] course2={new Course("5","高等数学"),new Course("6","数字逻辑")}; coursesToSelect.addAll(2, Arrays.asList(course2)); Course temp4=(Course) coursesToSelect.get(2); Course temp5=(Course) coursesToSelect.get(3); //System.out.println("添加了两门课程:"+temp4.id+":"+temp4.name+";"+temp5.id+":"+temp5.name); } /* * 取得List中的元素的方法 **/ /*public void testGet(){ System.out.println("有如下课程待选:"); int size=coursesToSelect.size(); for (int i = 0; i < size; i++) { Course cr=(Course) coursesToSelect.get(i); System.out.println("课程:"+cr.id+":"+cr.name); } } */ /* * 通过迭代器来遍历List * */ /*public void testIterator(){ //通过集合iterator方法,取得迭代器实例 Iterator it=coursesToSelect.iterator(); System.out.println("有如下课程待选(通过迭代器访问):"); while (it.hasNext()) { Course cr = (Course) it.next(); System.out.println("课程:"+cr.id+":"+cr.name); } }*/ /*测试List的contains方法*/ public void testListContains(){ //取得被选课程序列的第0个元素 Course course=coursesToSelect.get(0); //打印输出courseToSelect 是否包含course对象 System.out.println("取得课程"+course.name); System.out.println("被选课程中是否包含课程"+course.name+","+coursesToSelect.contains(course)); //创建一个新的课程对象,ID和名称,与course对象完全一样 Course course2=new Course(course.id,course.name); System.out.println("新创建课程:"+course2.name); System.out.println("备选课程中是否包含课程:"+course2.name+","+coursesToSelect.contains(course2)); } /** 通过for each方法访问集合元素 * * */ /*public void testForEach(){ System.out.println("有如下课程待选(通过 for each访问):"); for (Object object : coursesToSelect) { Course cr=(Course) object; System.out.println("课程:"+cr.id+":"+cr.name); } }*/ /** * @param argsS */ public static void main(String[] args) { // TODO Auto-generated method stub SetTest st=new SetTest(); st.testAdd(); st.testListContains(); /*st.testForEach(); //创建一个学生对象 Student student=new Student("1","小明"); System.out.println("欢迎学生"+student.name+"选课"); //创建一个Scanner对象,用来接收从键盘输入的课程ID Scanner console=new Scanner(System.in); for (int i = 0; i < 3; i++) { System.out.println("请输入课程ID"); String courseId=console.next(); for (Course cr : st.coursesToSelect) { if (cr.id.equals(courseId)) { student.courses.add(cr); Set中添加某个对象,无论添加杜少次, * 最终只会保留一个该对象(的引用) * 并且,保留的是第一次添加的那一个 //student.courses.add(null); //student.courses.add(cr); } } } st.testForEachForSet(student); */ } /*public void testForEachForSet(Student student){ //打印输出,学生所选的课程 System.out.println("共选择了"+student.courses.size()+"门课程!"); for(Course cr:student.courses){ System.out.println("选择了课程"+cr.id+":"+"cr.name"); } }*/ }
第一种方法:
package com.imooc.collection; import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; import java.util.List; import java.util.Scanner; public class SetTest { public List<Course>coursesToSelect; public SetTest(){ coursesToSelect=new ArrayList<Course>(); } //用于往CourseToSelect中添加备选课程 public void testAdd(){ //创建一个课程对象,并通过调用add方法,添加到备选课程List中 Course c=new Course("1","数据结构"); coursesToSelect.add(c); Course temp=(Course) coursesToSelect.get(0); //System.out.println("添加了一门课程"+temp.id+":"+temp.name); Course c1=new Course("2","C语言"); coursesToSelect.add(0, c1); Course temp1=(Course) coursesToSelect.get(0); //System.out.println("添加一门课程:"+temp1.id+":"+temp1.name); Course cq=new Course("1","数据结构"); coursesToSelect.add(cq); Course temp0=(Course) coursesToSelect.get(2); //System.out.println("添加了一门课程"+temp0.id+":"+temp0.name); /*Course c2=new Course("2","Test1"); CourseToSelect.add(4, c2);*/ Course[] course={new Course("3","离散数学"),new Course("4","汇编语言")}; coursesToSelect.addAll(Arrays.asList(course)); Course temp2=(Course) coursesToSelect.get(2); Course temp3=(Course) coursesToSelect.get(3); //System.out.println("添加了两门课程:"+temp2.id+":"+temp2.name+";"+temp3.id+":"+temp3.name); Course[] course2={new Course("5","高等数学"),new Course("6","数字逻辑")}; coursesToSelect.addAll(2, Arrays.asList(course2)); Course temp4=(Course) coursesToSelect.get(2); Course temp5=(Course) coursesToSelect.get(3); //System.out.println("添加了两门课程:"+temp4.id+":"+temp4.name+";"+temp5.id+":"+temp5.name); } /* * 取得List中的元素的方法 **/ /*public void testGet(){ System.out.println("有如下课程待选:"); int size=coursesToSelect.size(); for (int i = 0; i < size; i++) { Course cr=(Course) coursesToSelect.get(i); System.out.println("课程:"+cr.id+":"+cr.name); } } */ /* * 通过迭代器来遍历List * */ /*public void testIterator(){ //通过集合iterator方法,取得迭代器实例 Iterator it=coursesToSelect.iterator(); System.out.println("有如下课程待选(通过迭代器访问):"); while (it.hasNext()) { Course cr = (Course) it.next(); System.out.println("课程:"+cr.id+":"+cr.name); } }*/ /*测试List的contains方法*/ public void testListContains(){ //取得被选课程序列的第0个元素 Course course=coursesToSelect.get(0); //打印输出courseToSelect 是否包含course对象 System.out.println("取得课程"+course.name); System.out.println("被选课程中是否包含课程"+course.name+","+coursesToSelect.contains(course)); //创建一个新的课程对象,ID和名称,与course对象完全一样 Course course2=new Course(course.id,course.name); System.out.println("新创建课程:"+course2.name); System.out.println("备选课程中是否包含课程:"+course2.name+","+coursesToSelect.contains(course2)); } /** 通过for each方法访问集合元素 * * */ /*public void testForEach(){ System.out.println("有如下课程待选(通过 for each访问):"); for (Object object : coursesToSelect) { Course cr=(Course) object; System.out.println("课程:"+cr.id+":"+cr.name); } }*/ /** * @param argsS */ public static void main(String[] args) { // TODO Auto-generated method stub SetTest st=new SetTest(); st.testAdd(); st.testListContains(); /*st.testForEach(); //创建一个学生对象 Student student=new Student("1","小明"); System.out.println("欢迎学生"+student.name+"选课"); //创建一个Scanner对象,用来接收从键盘输入的课程ID Scanner console=new Scanner(System.in); for (int i = 0; i < 3; i++) { System.out.println("请输入课程ID"); String courseId=console.next(); for (Course cr : st.coursesToSelect) { if (cr.id.equals(courseId)) { student.courses.add(cr); Set中添加某个对象,无论添加杜少次, * 最终只会保留一个该对象(的引用) * 并且,保留的是第一次添加的那一个 //student.courses.add(null); //student.courses.add(cr); } } } st.testForEachForSet(student); */ } /*public void testForEachForSet(Student student){ //打印输出,学生所选的课程 System.out.println("共选择了"+student.courses.size()+"门课程!"); for(Course cr:student.courses){ System.out.println("选择了课程"+cr.id+":"+"cr.name"); } }*/ }
第二种方法
package com.imooc.collection; import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; import java.util.List; import java.util.Scanner; public class SetTest { public List<Course>coursesToSelect; private Scanner console; public SetTest(){ coursesToSelect=new ArrayList<Course>(); console=new Scanner(System.in); } //用于往CourseToSelect中添加备选课程 public void testAdd(){ //创建一个课程对象,并通过调用add方法,添加到备选课程List中 Course c=new Course("1","数据结构"); coursesToSelect.add(c); Course temp=(Course) coursesToSelect.get(0); //System.out.println("添加了一门课程"+temp.id+":"+temp.name); Course c1=new Course("2","C语言"); coursesToSelect.add(0, c1); Course temp1=(Course) coursesToSelect.get(0); //System.out.println("添加一门课程:"+temp1.id+":"+temp1.name); Course cq=new Course("1","数据结构"); coursesToSelect.add(cq); Course temp0=(Course) coursesToSelect.get(2); //System.out.println("添加了一门课程"+temp0.id+":"+temp0.name); /*Course c2=new Course("2","Test1"); CourseToSelect.add(4, c2);*/ Course[] course={new Course("3","离散数学"),new Course("4","汇编语言")}; coursesToSelect.addAll(Arrays.asList(course)); Course temp2=(Course) coursesToSelect.get(2); Course temp3=(Course) coursesToSelect.get(3); //System.out.println("添加了两门课程:"+temp2.id+":"+temp2.name+";"+temp3.id+":"+temp3.name); Course[] course2={new Course("5","高等数学"),new Course("6","数字逻辑")}; coursesToSelect.addAll(2, Arrays.asList(course2)); Course temp4=(Course) coursesToSelect.get(2); Course temp5=(Course) coursesToSelect.get(3); //System.out.println("添加了两门课程:"+temp4.id+":"+temp4.name+";"+temp5.id+":"+temp5.name); } /* * 取得List中的元素的方法 **/ /*public void testGet(){ System.out.println("有如下课程待选:"); int size=coursesToSelect.size(); for (int i = 0; i < size; i++) { Course cr=(Course) coursesToSelect.get(i); System.out.println("课程:"+cr.id+":"+cr.name); } } */ /* * 通过迭代器来遍历List * */ /*public void testIterator(){ //通过集合iterator方法,取得迭代器实例 Iterator it=coursesToSelect.iterator(); System.out.println("有如下课程待选(通过迭代器访问):"); while (it.hasNext()) { Course cr = (Course) it.next(); System.out.println("课程:"+cr.id+":"+cr.name); } }*/ /*测试List的contains方法*/ public void testListContains(){ //取得被选课程序列的第0个元素 Course course=coursesToSelect.get(0); //打印输出courseToSelect 是否包含course对象 System.out.println("取得课程"+course.name); System.out.println("被选课程中是否包含课程"+course.name+","+coursesToSelect.contains(course)); //提示输入课程名称 System.out.println("请输入课程名称"); String name=console.next(); //创建一个新的课程对象,ID和名称,与course对象完全一样 Course course2=new Course();//无参构造方法 course2.name=name; System.out.println("新创建课程:"+course2.name); System.out.println("备选课程中是否包含课程:"+course2.name+","+coursesToSelect.contains(course2)); } /** 通过for each方法访问集合元素 * * */ /*public void testForEach(){ System.out.println("有如下课程待选(通过 for each访问):"); for (Object object : coursesToSelect) { Course cr=(Course) object; System.out.println("课程:"+cr.id+":"+cr.name); } }*/ /** * @param argsS */ public static void main(String[] args) { // TODO Auto-generated method stub SetTest st=new SetTest(); st.testAdd(); st.testListContains(); /*st.testForEach(); //创建一个学生对象 Student student=new Student("1","小明"); System.out.println("欢迎学生"+student.name+"选课"); //创建一个Scanner对象,用来接收从键盘输入的课程ID Scanner console=new Scanner(System.in); for (int i = 0; i < 3; i++) { System.out.println("请输入课程ID"); String courseId=console.next(); for (Course cr : st.coursesToSelect) { if (cr.id.equals(courseId)) { student.courses.add(cr); Set中添加某个对象,无论添加杜少次, * 最终只会保留一个该对象(的引用) * 并且,保留的是第一次添加的那一个 //student.courses.add(null); //student.courses.add(cr); } } } st.testForEachForSet(student); */ } /*public void testForEachForSet(Student student){ //打印输出,学生所选的课程 System.out.println("共选择了"+student.courses.size()+"门课程!"); for(Course cr:student.courses){ System.out.println("选择了课程"+cr.id+":"+"cr.name"); } }*/ }
测试
package com.imooc.collection; /* * 课程类 * */ public class Course { public String id; public String name; public Course(String id, String name) { this.id = id; this.name = name; } public Course() { } //重写某个类的 equals方法来判断模板 @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (!(obj instanceof Course)) { return false; } Course course = (Course) obj; if (this.name == null) { if (course.name == null) { return true; } else { return false; } } else { if (this.name.equals(course.name)) { return true; } else { return false; } } } }
运行结果为:
- 学生选课——判断Set中课程是否存在
图片(1)
图片(2)
package com.imooc.collection; /* * 课程类 * */ public class Course { public String id; public String name; public Course(String id, String name) { this.id = id; this.name = name; } public Course() { } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((name == null) ? 0 : name.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (!(obj instanceof Course)) return false; Course other = (Course) obj; if (name == null) { if (other.name != null) return false; } else if (!name.equals(other.name)) return false; return true; } }
package com.imooc.collection; import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; import java.util.List; import java.util.Scanner; public class SetTest { public List<Course>coursesToSelect; private Scanner console; public Student student; public SetTest(){ coursesToSelect=new ArrayList<Course>(); console=new Scanner(System.in); } //用于往CourseToSelect中添加备选课程 public void testAdd(){ //创建一个课程对象,并通过调用add方法,添加到备选课程List中 Course c=new Course("1","数据结构"); coursesToSelect.add(c); Course temp=(Course) coursesToSelect.get(0); //System.out.println("添加了一门课程"+temp.id+":"+temp.name); Course c1=new Course("2","C语言"); coursesToSelect.add(0, c1); Course temp1=(Course) coursesToSelect.get(0); //System.out.println("添加一门课程:"+temp1.id+":"+temp1.name); Course cq=new Course("1","数据结构"); coursesToSelect.add(cq); Course temp0=(Course) coursesToSelect.get(2); //System.out.println("添加了一门课程"+temp0.id+":"+temp0.name); /*Course c2=new Course("2","Test1"); CourseToSelect.add(4, c2);*/ Course[] course={new Course("3","离散数学"),new Course("4","汇编语言")}; coursesToSelect.addAll(Arrays.asList(course)); Course temp2=(Course) coursesToSelect.get(2); Course temp3=(Course) coursesToSelect.get(3); //System.out.println("添加了两门课程:"+temp2.id+":"+temp2.name+";"+temp3.id+":"+temp3.name); Course[] course2={new Course("5","高等数学"),new Course("6","数字逻辑")}; coursesToSelect.addAll(2, Arrays.asList(course2)); Course temp4=(Course) coursesToSelect.get(2); Course temp5=(Course) coursesToSelect.get(3); //System.out.println("添加了两门课程:"+temp4.id+":"+temp4.name+";"+temp5.id+":"+temp5.name); } /* * 取得List中的元素的方法 **/ /*public void testGet(){ System.out.println("有如下课程待选:"); int size=coursesToSelect.size(); for (int i = 0; i < size; i++) { Course cr=(Course) coursesToSelect.get(i); System.out.println("课程:"+cr.id+":"+cr.name); } } */ /* * 通过迭代器来遍历List * */ /*public void testIterator(){ //通过集合iterator方法,取得迭代器实例 Iterator it=coursesToSelect.iterator(); System.out.println("有如下课程待选(通过迭代器访问):"); while (it.hasNext()) { Course cr = (Course) it.next(); System.out.println("课程:"+cr.id+":"+cr.name); } } */ /*测试List的contains方法*/ /*public void testListContains(){ //取得被选课程序列的第0个元素 Course course=coursesToSelect.get(0); //打印输出courseToSelect 是否包含course对象 System.out.println("取得课程"+course.name); System.out.println("被选课程中是否包含课程"+course.name+","+coursesToSelect.contains(course)); //提示输入课程名称 System.out.println("请输入课程名称"); String name=console.next(); //创建一个新的课程对象,ID和名称,与course对象完全一样 Course course2=new Course();//无参构造方法 course2.name=name; System.out.println("新创建课程:"+course2.name); System.out.println("备选课程中是否包含课程:"+course2.name+","+coursesToSelect.contains(course2)); } */ /** 通过for each方法访问集合元素 * * */ public void testForEach(){ System.out.println("有如下课程待选(通过 for each访问):"); for (Object object : coursesToSelect) { Course cr=(Course) object; System.out.println("课程:"+cr.id+":"+cr.name); } } //创建学生对象并选课 public void createStudentAndSelectCours() { // 创建一个学生对象 student = new Student("1", "小明"); System.out.println("欢迎学生" + student.name + "选课"); // 创建一个Scanner对象,用来接收从键盘输入的课程ID Scanner console = new Scanner(System.in); for (int i = 0; i < 3; i++) { System.out.println("请输入课程ID"); String courseId = console.next(); for (Course cr : coursesToSelect) { if (cr.id.equals(courseId)) { student.courses.add(cr); } } } } /*测试Set的contains方法*/ public void testSetContains() { // 提示输入课程名称 System.out.println("请输入课程名称"); String name = console.next(); // 创建一个新的课程对象,ID和名称,与course对象完全一样 Course course2 = new Course();// 无参构造方法 course2.name = name; System.out.println("新创建课程:" + course2.name); System.out.println("备选课程中是否包含课程:" + course2.name + "," + student.courses.contains(course2)); } /** * @param argsS */ public static void main(String[] args) { // TODO Auto-generated method stub SetTest st=new SetTest(); st.testAdd(); //st.testListContains(); st.createStudentAndSelectCours(); st.testSetContains(); /*st.testGet(); st.testIterator();*/ st.testForEach(); //创建一个学生对象 /*Student student=new Student("1","小明"); System.out.println("欢迎学生"+student.name+"选课"); //创建一个Scanner对象,用来接收从键盘输入的课程ID Scanner console=new Scanner(System.in); for (int i = 0; i < 3; i++) { System.out.println("请输入课程ID"); String courseId=console.next(); for (Course cr : st.coursesToSelect) { if (cr.id.equals(courseId)) { student.courses.add(cr); Set中添加某个对象,无论添加杜少次, * 最终只会保留一个该对象(的引用) * 并且,保留的是第一次添加的那一个 //student.courses.add(null); //student.courses.add(cr); } } } st.testForEachForSet(student); */ } /*public void testForEachForSet(Student student){ //打印输出,学生所选的课程 System.out.println("共选择了"+student.courses.size()+"门课程!"); for(Course cr:student.courses){ System.out.println("选择了课程"+cr.id+":"+"cr.name"); } }*/ }
运行结果为:
- 学生选课——获取List中课程的位置
package com.imooc.collection; import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; import java.util.List; import java.util.Scanner; public class SetTest { public List<Course>coursesToSelect; private Scanner console; public Student student; public SetTest(){ coursesToSelect=new ArrayList<Course>(); console=new Scanner(System.in); } //用于往CourseToSelect中添加备选课程 public void testAdd(){ //创建一个课程对象,并通过调用add方法,添加到备选课程List中 Course c=new Course("1","数据结构"); coursesToSelect.add(c); Course temp=(Course) coursesToSelect.get(0); //System.out.println("添加了一门课程"+temp.id+":"+temp.name); Course c1=new Course("2","C语言"); coursesToSelect.add(0, c1); Course temp1=(Course) coursesToSelect.get(0); //System.out.println("添加一门课程:"+temp1.id+":"+temp1.name); Course cq=new Course("1","数据结构"); coursesToSelect.add(cq); Course temp0=(Course) coursesToSelect.get(2); //System.out.println("添加了一门课程"+temp0.id+":"+temp0.name); /*Course c2=new Course("2","Test1"); CourseToSelect.add(4, c2);*/ Course[] course={new Course("3","离散数学"),new Course("4","汇编语言")}; coursesToSelect.addAll(Arrays.asList(course)); Course temp2=(Course) coursesToSelect.get(2); Course temp3=(Course) coursesToSelect.get(3); //System.out.println("添加了两门课程:"+temp2.id+":"+temp2.name+";"+temp3.id+":"+temp3.name); Course[] course2={new Course("5","高等数学"),new Course("6","数字逻辑")}; coursesToSelect.addAll(2, Arrays.asList(course2)); Course temp4=(Course) coursesToSelect.get(2); Course temp5=(Course) coursesToSelect.get(3); //System.out.println("添加了两门课程:"+temp4.id+":"+temp4.name+";"+temp5.id+":"+temp5.name); } /* * 取得List中的元素的方法 **/ /*public void testGet(){ System.out.println("有如下课程待选:"); int size=coursesToSelect.size(); for (int i = 0; i < size; i++) { Course cr=(Course) coursesToSelect.get(i); System.out.println("课程:"+cr.id+":"+cr.name); } } */ /* * 通过迭代器来遍历List * */ /*public void testIterator(){ //通过集合iterator方法,取得迭代器实例 Iterator it=coursesToSelect.iterator(); System.out.println("有如下课程待选(通过迭代器访问):"); while (it.hasNext()) { Course cr = (Course) it.next(); System.out.println("课程:"+cr.id+":"+cr.name); } } */ /*测试List的contains方法*/ public void testListContains(){ //取得被选课程序列的第0个元素 Course course=coursesToSelect.get(0); //打印输出courseToSelect 是否包含course对象 System.out.println("取得课程"+course.name); System.out.println("被选课程中是否包含课程"+course.name+","+coursesToSelect.contains(course)); //提示输入课程名称 System.out.println("请输入课程名称"); String name=console.next(); //创建一个新的课程对象,ID和名称,与course对象完全一样 Course course2=new Course();//无参构造方法 course2.name=name; System.out.println("新创建课程:"+course2.name); System.out.println("备选课程中是否包含课程:"+course2.name+","+coursesToSelect.contains(course2)); //通过indexOf方法来取得某元素的索引位置 if (coursesToSelect.contains(course2)) { System.out.println("课程:"+course2.name+"的索引位置为:"+coursesToSelect.indexOf(course2)); } } /** 通过for each方法访问集合元素 * * */ public void testForEach(){ System.out.println("有如下课程待选(通过 for each访问):"); for (Object object : coursesToSelect) { Course cr=(Course) object; System.out.println("课程:"+cr.id+":"+cr.name); } } //创建学生对象并选课 /*public void createStudentAndSelectCours() { // 创建一个学生对象 student = new Student("1", "小明"); System.out.println("欢迎学生" + student.name + "选课"); // 创建一个Scanner对象,用来接收从键盘输入的课程ID Scanner console = new Scanner(System.in); for (int i = 0; i < 3; i++) { System.out.println("请输入课程ID"); String courseId = console.next(); for (Course cr : coursesToSelect) { if (cr.id.equals(courseId)) { student.courses.add(cr); } } } }*/ /*测试Set的contains方法*/ /*public void testSetContains() { // 提示输入课程名称 System.out.println("请输入课程名称"); String name = console.next(); // 创建一个新的课程对象,ID和名称,与course对象完全一样 Course course2 = new Course();// 无参构造方法 course2.name = name; System.out.println("新创建课程:" + course2.name); System.out.println("备选课程中是否包含课程:" + course2.name + "," + student.courses.contains(course2)); } */ /** * @param argsS */ public static void main(String[] args) { // TODO Auto-generated method stub SetTest st=new SetTest(); st.testAdd(); st.testListContains(); //st.createStudentAndSelectCours(); //st.testSetContains(); /*st.testGet(); st.testIterator();*/ st.testForEach(); //创建一个学生对象 /*Student student=new Student("1","小明"); System.out.println("欢迎学生"+student.name+"选课"); //创建一个Scanner对象,用来接收从键盘输入的课程ID Scanner console=new Scanner(System.in); for (int i = 0; i < 3; i++) { System.out.println("请输入课程ID"); String courseId=console.next(); for (Course cr : st.coursesToSelect) { if (cr.id.equals(courseId)) { student.courses.add(cr); Set中添加某个对象,无论添加杜少次, * 最终只会保留一个该对象(的引用) * 并且,保留的是第一次添加的那一个 //student.courses.add(null); //student.courses.add(cr); } } } st.testForEachForSet(student); */ } /*public void testForEachForSet(Student student){ //打印输出,学生所选的课程 System.out.println("共选择了"+student.courses.size()+"门课程!"); for(Course cr:student.courses){ System.out.println("选择了课程"+cr.id+":"+"cr.name"); } }*/ }
运行结果为:
- 学生选课——判断Map中是否包含指定的key和value
package com.imooc.collection; /* * 学生类 * */ import java.util.HashSet; import java.util.Set; public class Student { public String id; public String name; public Set <Course>courses;//泛型<Course> @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((name == null) ? 0 : name.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (!(obj instanceof Student)) return false; Student other = (Student) obj; if (name == null) { if (other.name != null) return false; } else if (!name.equals(other.name)) return false; return true; } public Student(String id,String name){ this.id=id; this.name=name; this.courses=new HashSet<Course>(); } }
package com.imooc.collection; /* * 学生类 * */ import java.util.HashSet; import java.util.Set; public class Student { public String id; public String name; public Set <Course>courses;//泛型<Course> @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((name == null) ? 0 : name.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (!(obj instanceof Student)) return false; Student other = (Student) obj; if (name == null) { if (other.name != null) return false; } else if (!name.equals(other.name)) return false; return true; } public Student(String id,String name){ this.id=id; this.name=name; this.courses=new HashSet<Course>(); } }
package com.imooc.collection; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; import java.util.Scanner; import java.util.Set; public class MapTest { //用来承装学生类型对象 public Map<String,Student>students; /*在构造器中初始化students属性*/ public MapTest(){ this.students=new HashMap<String,Student>(); } /** * 测试添加:输入学生ID,判断是否被占用 * 若薇被占用,则输入姓名,创建新学生对象,并且 * 添加到student中 */ public void testPut(){ Scanner console=new Scanner(System.in); int i=0; while (i<3) { System.out.println("请输入学生ID"); String ID=console.next(); Student st=students.get(ID); if (st==null) { //提示输入学生姓名 System.out.println("请输入学生姓名"); String name=console.next(); //添加新的学生对象 Student newStudent=new Student(ID,name); students.put(ID,newStudent); System.out.println("成功添加学生:"+students.get(ID).name); i++; }else{ System.out.println("该学生ID已被占用"); continue; } } } /** * @param args测试Map的keySet方法 */ public void testKeySet(){ //keySet方法,返回Map中的所有“键”的Set集合 Set<String> keySet=students.keySet(); //取得student的容量 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); } } } /** * 测试删除Map中的映射 */ public void testRemove(){ //获取从键盘输入待删除学生ID字符串 Scanner console=new Scanner(System.in); while (true) { //提示输入待删除的学生ID System.out.println("请输入要删除的学生ID"); String ID=console.next(); //判断该ID是否有对应的学生对象 Student st=students.get(ID); if (st==null) { //提示输入的ID并不存在 System.out.println("该ID不存在"); continue; } students.remove(ID); System.out.println("成功删除学生"+st.name); break; } } /** * 通过entrySet方法来遍历Map */ public void testEntrySet(){ //通过entrySet方法,返回Map中的所有键值对 Set<Entry<String,Student>> entrySet=students.entrySet(); for (Entry<String, Student> entry : entrySet) { System.out.println("取得键"+entry.getKey()); System.out.println("对应的职为:"+entry.getValue().name); } } /** * 利用put方法修改Map中的已有映射 */ public void testModify(){ //提示输入要修改的学生ID System.out.println("请输入要修改的学生ID:"); //创建Scanner对象,去获取从键盘上输入的学生ID字符串 Scanner console=new Scanner(System.in); while(true){ //取得从键盘上输入的学生ID String stuID=console.next(); //从students中查找该学生ID对应的学生对象 Student student=students.get(stuID); if (student==null) { System.out.println("该ID不存在,重新输入!"); continue; } //提示当前对应的学生对象的姓名 System.out.println("当前该学生ID,所对应的学生为:"+student.name); //提示输入新的学生姓名,来修改已有的映射 System.out.println("请输入新的学生姓名"); String name=console.next(); Student newStudent=new Student(stuID,name); students.put(stuID,newStudent); System.out.println("修改成功!"); break; } } /** * 测试Map中,是否包含某个key值或者某个value值 * 用containsValue()方法,来判断是否包含某个value值 */ public void testContainsKeyOrValue(){ //提示输入学生id System.out.println("请输入要查询的学生ID"); Scanner console=new Scanner(System.in); String id=console.next(); //在Map中,用containsKey()方法,来判断是否包含某个key值 System.out.println("您输入的学生ID为:"+id+"在学生映射表中是否存在:"+students.containsKey(id)); if (students.containsKey(id)) { System.out.println("对应的学生为:"+students.get(id).name); } //提示输入学生姓名 System.out.println("请输入要查询的学生姓名:"); String name=console.next(); //用containsValue()方法,来判断是否包含某个Value值 if (students.containsValue(new Student(null,name))) { System.out.println("在学生映射表中,确实包含学生:"+name); }else{ System.out.println("在学生映射表中不存在该学生!"); } } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub MapTest mt=new MapTest(); mt.testPut(); mt.testKeySet(); /*mt.testRemove(); mt.testEntrySet();*/ /*mt.testModify(); mt.testEntrySet();*/ mt.testContainsKeyOrValue(); } }
运行结果为:
请输入学生ID 1 请输入学生姓名 小明 成功添加学生:小明 请输入学生ID 2 请输入学生姓名 小红 成功添加学生:小红 请输入学生ID 3 请输入学生姓名 小兰 成功添加学生:小兰 总共有:3个学生 学生小兰 学生小红 学生小明 请输入要查询的学生ID 2 您输入的学生ID为:2在学生映射表中是否存在:true 对应的学生为:小红 请输入要查询的学生姓名: 小红 在学生映射表中,确实包含学生:小红
- 应用Collection.sort()实现List排序
Arrays类( java.util.Arrays)
Collections工具类(java.util.Collections)
是Java集合框架中,用来操作集合对象的工具类也是Java集合框架的成员
sort() (排序)方法
package com.imooc.collection; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Random; /** *将要完成: *1.通过Collections.sort()方法,对Integer泛型的List进行排序; *2.对String泛型的List进行排序 *3.对其他类型泛型的List进行排序,以student为例。 */ public class CollectionsTest { /** *1. 通过Collections.sort()方法,对Integer泛型的List进行排序; * 创建一个Integer泛型的List,插入十个100以内的不重复随机整数, * 调用Collections.sort()方法对其进行排序 */ public void testSort1(){ List<Integer> integerList=new ArrayList<Integer>(); //插入十个100以内的不重复随机整数 Random random=new Random(); Integer k; for (int i = 0; i < 10; i++) { do{ k=random.nextInt(100); }while(integerList.contains(k)); integerList.add(k); 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); } } /* *2.对String泛型的List进行排序 *创建String泛型的List,添加三个乱序的String元素 *调用sort()方法,再次输出排序后的顺序 */ public void testSort2(){ List<String> list=new ArrayList<String>(); list.add("microsoft"); list.add("google"); list.add("lenovo"); System.out.println("-----------排序前--------"); for (String string : list) { System.out.println("元素:"+string); } Collections.sort(list); System.out.println("------排序后-------"); for (String string : list) { System.out.println("元素:"+string); } } public static void main(String[] args) { CollectionsTest co=new CollectionsTest(); //co.testSort1(); co.testSort2(); } }
运行结果:
- 学生选课——尝试对学生序列排序
- Comparable & Comparator简介
Comparable------默认比较规则
Comparator------临时比较规则
Comparable接口——可比较的
- 实现该接口表示:这个类的实例可以比较大小,可以进行自然排序
- 定义了默认的比较规则
- 其实现类需实现comparaTo()方法
- comparaTo()方法返回正数表示大,负数表示小,0表示相等
Comparator接口——比较工具接口
- 用于定义临时比较规则,而不是默认比较规则
- 其实现类需要实现Compare()方法
- Comparator和Comparable都是Java集合框架的成员
- 学生选课——实现学生序列排序
package com.imooc.collection; /* * 学生类 * */ import java.util.HashSet; import java.util.Set; public class Student implements Comparable<Student>{ public String id; public String name; public Set <Course>courses;//泛型<Course> @Override public int compareTo(Student o) { // TODO Auto-generated method stub return this.id.compareTo(o.id); } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((name == null) ? 0 : name.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (!(obj instanceof Student)) return false; Student other = (Student) obj; if (name == null) { if (other.name != null) return false; } else if (!name.equals(other.name)) return false; return true; } public Student(String id,String name){ this.id=id; this.name=name; this.courses=new HashSet<Course>(); } }
package com.imooc.collection; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Random; /** *将要完成: *1.通过Collections.sort()方法,对Integer泛型的List进行排序; *2.对String泛型的List进行排序 *3.对其他类型泛型的List进行排序,以student为例。 */ public class CollectionsTest { /** *1. 通过Collections.sort()方法,对Integer泛型的List进行排序; * 创建一个Integer泛型的List,插入十个100以内的不重复随机整数, * 调用Collections.sort()方法对其进行排序 */ /*public void testSort1(){ List<Integer> integerList=new ArrayList<Integer>(); //插入十个100以内的不重复随机整数 Random random=new Random(); Integer k; for (int i = 0; i < 10; i++) { do{ k=random.nextInt(100); }while(integerList.contains(k)); integerList.add(k); 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); } }*/ /* *2.对String泛型的List进行排序 *创建String泛型的List,添加三个乱序的String元素 *调用sort()方法,再次输出排序后的顺序 */ /*public void testSort2(){ List<String> list=new ArrayList<String>(); list.add("microsoft"); list.add("google"); list.add("lenovo"); System.out.println("-----------排序前--------"); for (String string : list) { System.out.println("元素:"+string); } Collections.sort(list); System.out.println("------排序后-------"); for (String string : list) { System.out.println("元素:"+string); } } */ /** * 3.对其他类型泛型的List进行排序,以student为例。 * * */ public void testSort3(){ List<Student> studentList=new ArrayList<Student>(); Random random=new Random(); studentList.add(new Student(random.nextInt(1000)+"","Mike")); studentList.add(new Student(random.nextInt(1000)+"","Angela")); studentList.add(new Student(random.nextInt(1000)+"","Lucy")); studentList.add(new Student(1000+"","Beyonc")); System.out.println("----------排序前------------"); for (Student student : studentList) { System.out.println("学生:"+student.id+":"+student.name); } Collections.sort(studentList); System.out.println(); System.out.println("----------排序后-----------"); for (Student student : studentList) { System.out.println("学生"+student.id+":"+student.name); } } public static void main(String[] args) { CollectionsTest co=new CollectionsTest(); //co.testSort1(); //co.testSort2(); co.testSort3(); } }
运行结果:
package com.imooc.collection; import java.util.Comparator; public class StudentComparator implements Comparator<Student> { @Override public int compare(Student o1, Student o2) { // TODO Auto-generated method stub return o1.name.compareTo(o2.name); } }
package com.imooc.collection; /* * 学生类 * */ import java.util.HashSet; import java.util.Set; public class Student implements Comparable<Student>{ public String id; public String name; public Set <Course>courses;//泛型<Course> @Override public int compareTo(Student o) { // TODO Auto-generated method stub return this.id.compareTo(o.id); } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((name == null) ? 0 : name.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (!(obj instanceof Student)) return false; Student other = (Student) obj; if (name == null) { if (other.name != null) return false; } else if (!name.equals(other.name)) return false; return true; } public Student(String id,String name){ this.id=id; this.name=name; this.courses=new HashSet<Course>(); } }
package com.imooc.collection; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Random; /** *将要完成: *1.通过Collections.sort()方法,对Integer泛型的List进行排序; *2.对String泛型的List进行排序 *3.对其他类型泛型的List进行排序,以student为例。 */ public class CollectionsTest { /** *1. 通过Collections.sort()方法,对Integer泛型的List进行排序; * 创建一个Integer泛型的List,插入十个100以内的不重复随机整数, * 调用Collections.sort()方法对其进行排序 */ /*public void testSort1(){ List<Integer> integerList=new ArrayList<Integer>(); //插入十个100以内的不重复随机整数 Random random=new Random(); Integer k; for (int i = 0; i < 10; i++) { do{ k=random.nextInt(100); }while(integerList.contains(k)); integerList.add(k); 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); } }*/ /* *2.对String泛型的List进行排序 *创建String泛型的List,添加三个乱序的String元素 *调用sort()方法,再次输出排序后的顺序 */ /*public void testSort2(){ List<String> list=new ArrayList<String>(); list.add("microsoft"); list.add("google"); list.add("lenovo"); System.out.println("-----------排序前--------"); for (String string : list) { System.out.println("元素:"+string); } Collections.sort(list); System.out.println("------排序后-------"); for (String string : list) { System.out.println("元素:"+string); } } */ /** * 3.对其他类型泛型的List进行排序,以student为例。 * * */ public void testSort3(){ List<Student> studentList=new ArrayList<Student>(); Random random=new Random(); studentList.add(new Student(random.nextInt(1000)+"","Mike")); studentList.add(new Student(random.nextInt(1000)+"","Angela")); studentList.add(new Student(random.nextInt(1000)+"","Lucy")); studentList.add(new Student(1000+"","Beyonc")); System.out.println("----------排序前------------"); for (Student student : studentList) { System.out.println("学生:"+student.id+":"+student.name); } Collections.sort(studentList); System.out.println(); System.out.println("----------排序后-----------"); for (Student student : studentList) { System.out.println("学生"+student.id+":"+student.name); } Collections.sort(studentList,new StudentComparator()); System.out.println("---------按照姓名排序后---------"); for (Student student : studentList) { System.out.println("学生"+student.id+":"+student.name); } } public static void main(String[] args) { CollectionsTest co=new CollectionsTest(); //co.testSort1(); //co.testSort2(); co.testSort3(); } }
运行结果为:
Java中的集合框架(下)的更多相关文章
- 菜鸟日记之 java中的集合框架
java中的集合框架图 如图所示:java中的集合分为两种Collection和Map两种接口 可分为Collection是单列集合和Map的双列集合 Collection单列集合:继承了Iterat ...
- Java中的集合框架-Collection(二)
上一篇<Java中的集合框架-Collection(一)>把Java集合框架中的Collection与List及其常用实现类的功能大致记录了一下,本篇接着记录Collection的另一个子 ...
- Java中的集合框架(上)
Java中的集合框架概述 集合的概念: Java中的集合类:是一种工具类,就像是容器,存储任意数量的具有共同属性的对象. 集合的作用: 1.在类的内部,对数据进行组织: 2.简单的快速的搜索大数据量的 ...
- Java中的集合框架-Collections和Arrays
上一篇<Java中的集合框架-Map>把集合框架中的键值对容器Map中常用的知识记录了一下,本节记录一下集合框架的两个工具类Collections和Arrays 一,Collections ...
- Java中的集合框架-Map
前两篇<Java中的集合框架-Commection(一)>和<Java中的集合框架-Commection(二)>把集合框架中的Collection开发常用知识点作了一下记录,从 ...
- Java中的集合框架
概念与作用 集合概念 现实生活中:很多事物凑在一起 数学中的集合:具有共同属性的事物的总体 java中的集合类:是一种工具类,就像是容器,储存任意数量的具有共同属性的对象 在编程时,常常需要集中存放多 ...
- Java中的集合框架-Collection(一)
一,Collection接口 在日常的开发工作中,我们经常使用数组,但是数组是有很多的局限性的,比如:数组大小固定后不可修改,只能存储基本类型的值等等. 基于数组的这些局限性,Java框架就产生了用于 ...
- JAVA 中的集合框架
java集合框架提供了一套性能优良.使用方便的接口和类,它们位于java.util包中 一.集合与数组 数组:(可以存储基本数据类型)是用来存现对象的一种容器,但是数组的长度固定,不适合在对象数量未知 ...
- Java学习--java中的集合框架、Collection接口、list接口
与数组相比:1.数组的长度固定,而集合的长度可变2.数组只能通过下表访问元素,类型固定,而有的集合可以通过任意类型查找所映射的具体对象 java集合框架:collection(list序列,queue ...
随机推荐
- Tuxedo:Tuxedo支持的分布式通信方式
1.RPC:用于远程方法调用.Java中类似的技术有EJB.WebService 2.Conversaction:交流.Java中类似的有JDBC. 3.Message Notification:消息 ...
- Oracle JDBC:驱动版本区别与区分 [转]
classes12.jar,ojdbc14.jar,ojdbc5.jar和ojdbc6.jar的区别,之间的差异 在使用Oracle JDBC驱动时,有些问题你是不是通过替换不同版本的Oracle ...
- docker学习笔记(一)
docker是一种容器技术,现在火的一塌糊涂,最近公司打算用docker统一开发.测试.预上线.上线环境,所以花了时间研究一下. docker是一种容器技术,之前是基于LXC容器,现在已经改成基于li ...
- git学习笔记5-撤销操作
git撤销有四种情况,一是没有commit,想恢复所有文件:二是没有commit,想恢复全部文件:三是已经commit了,想恢复某个版本:四是本地已经提交了,想从远程库恢复. 1. 没有commit, ...
- JaveScript运算符(JS知识点归纳三)
JaveScript中有许多的运算符,在这里就只说明一些需要注意的. 01 一元运算符 一元:指的是参与运算的操作数只有一个 最经常使用的是++ -- 计算规则: ++/-- 前置于操作数的时候 ...
- Android 环境搭建、基础窗口window/Mac
1.五步搞定Android开发环境部署--非常详细的Android开发环境搭建教程 2.Android开发学习之路--MAC下Android Studio开发环境搭建 4.Android常用开发工具以 ...
- iOS控制器跳转动画
1 2 3 4 5 6 7 8 9 10 11 12 13 14 MyViewController *myVC = [[MyViewController alloc]init]; //创建动画 C ...
- Git常用命令清单笔记
git github 小弟调调 2015年01月12日发布 赞 | 6收藏 | 45 5k 次浏览 这里是我的笔记,记录一些git常用和一些记不住的命令,这个笔记原本是基于 颜海镜的文章增加 ...
- bzoj 1492: [NOI2007]货币兑换Cash
Description 小Y最近在一家金券交易所工作.该金券交易所只发行交易两种金券:A纪念券(以下简称A券)和 B纪念券(以下 简称B券).每个持有金券的顾客都有一个自己的帐户.金券的数目可以是一个 ...
- ioutil包二
ioutil包二 (原创随笔,转载请注明出处 http://www.cnblogs.com/majianguo/p/8016426.html) ioutil包实现了一些I/O实用功能,导出了7个函数和 ...