course类
package com.collection_map;
public class Course {
public String id;
public String name;
public Course(String id,String name){
this.id=id;
this.name=name;
}
public Course(){
}
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;
}
}
}
Student类
package com.collection_map;
import java.util.HashSet;
import java.util.Set;
public class Student implements Comparable<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>();
}
@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 (getClass() != obj.getClass())
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;
}
@Override
public int compareTo(Student o) {
// TODO Auto-generated method stub
return this.id.compareTo(o.id);
}
}
CollectionTest类
package com.collection_map;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;
public class CollectionTest {
//通过Collections.sort()方法,对Integer泛型的List进行排序
public void testSort1(){
List<Integer> integerList=new ArrayList<Integer>();
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);
}
}
//对String泛型List进行排序
public void testSort2(){
List<String> stringList=new ArrayList<String>();
stringList.add("microsoft");
stringList.add("google");
stringList.add("lenovo");
System.out.println("----------排序前---------");
for(String string:stringList){
System.out.println("元素:"+string);
}
Collections.sort(stringList);
System.out.println("----------排序后---------");
for(String string:stringList){
System.out.println("元素:"+string);
}
}
//对随机string排序
public void testSort22(){
List<String> stringList=new ArrayList<String>();
for(int i=0;i<10;i++){
StringBuilder sb=new StringBuilder();
Random rd=new Random();
do{
int len=rd.nextInt(10);
for(int j=0;j<len;j++){
char c=(char)(rd.nextInt(25)+'a');
sb.append(c);
}
}while(stringList.contains(sb));
stringList.add(sb.toString());
}
System.out.println("----------排序前---------");
for(String string:stringList){
System.out.println("元素:"+string);
}
Collections.sort(stringList);
System.out.println("----------排序后---------");
for(String string:stringList){
System.out.println("元素:"+string);
}
}
//对其他类型泛型的List进行排序
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"));
System.out.println("----------排序前---------");
for(Student student:studentList){
System.out.println("学生:"+student.id+":"+student.name);
}
Collections.sort(studentList);
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) {
// TODO Auto-generated method stub
CollectionTest ct=new CollectionTest();
//ct.testSort1();
//ct.testSort2();
// ct.testSort22();
ct.testSort3();
}
}
ListTest类
package com.collection_map;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
public class ListTest {
//用于存放备选课程
public List courseToSelect;
public ListTest(){
this.courseToSelect=new ArrayList();
}
public void testAdd(){
Course cr1=new Course("1","数据结构");
courseToSelect.add(cr1);
Course temp=(Course)courseToSelect.get(0);
System.out.println("添加了课程:"+temp.id+":"+temp.name);
Course cr2=new Course("2","C语言");
courseToSelect.add(0,cr2);
Course temp2=(Course)courseToSelect.get(0);
System.out.println("添加了课程:"+temp2.id+":"+temp2.name);
Course[] course={new Course("3","离散数学"),new Course("4","汇编语言")};
courseToSelect.addAll(Arrays.asList(course));
Course temp3=(Course)courseToSelect.get(2);
Course temp4=(Course)courseToSelect.get(3);
System.out.println("添加了两门课程:"+temp3.id+":"+temp3.name+";"+temp4.id+":"+temp4.name);
Course[] course2={new Course("5","高等数学"),new Course("6","英语")};
courseToSelect.addAll(2,Arrays.asList(course2));
Course temp5=(Course)courseToSelect.get(2);
Course temp6=(Course)courseToSelect.get(3);
System.out.println("添加了两门课程:"+temp5.id+":"+temp5.name+";"+temp6.id+":"+temp6.name);
}
public void testGet(){
int size=courseToSelect.size();
System.out.println("有如下课程可选:");
for(int i=0;i<size;i++){
Course cr=(Course)courseToSelect.get(i);
System.out.println("课程:"+cr.id+":"+cr.name);
}
}
// 通过迭代器来遍历List,迭代器本身也是一个接口
public void testIterator(){
Iterator it=courseToSelect.iterator();
System.out.println("有如下课程可选(通过迭代器):");
while(it.hasNext()){
Course cr=(Course)it.next();
System.out.println("课程:"+cr.id+":"+cr.name);
}
}
//通过for each方法访问集合元素
public void testForEach(){
System.out.println("有如下课程可选(通过foreach):");
for(Object obj:courseToSelect){
Course cr=(Course)obj;
System.out.println("课程:"+cr.id+":"+cr.name);
}
}
//修改List中的元素
public void testModify(){
courseToSelect.set(4,new Course("7","毛概"));
}
//删除List中的元素
/* public void testRemove(){
//Course cr=(Course)courseToSelect.get(4);
//System.out.println("我是课程:"+cr.id+":"+cr.name+"我即将被删除");
courseToSelect.remove(4);
System.out.println("成功删除课程!!");
testForEach();
}*/
public void testRemoveAll(){
System.out.println("即将删除4和5位置上删除");
Course[] courses={(Course)courseToSelect.get(4),(Course)courseToSelect.get(5)};
courseToSelect.removeAll(Arrays.asList(courses));
System.out.println("成功删除课程!!");
testForEach();
}
public static void main(String[] args) {
ListTest lt=new ListTest();
lt.testAdd();
lt.testGet();
lt.testIterator();
lt.testModify();
lt.testForEach();
//lt.testRemove();
lt.testRemoveAll();
}
}
MapTest类
package com.collection_map;
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,判断是否被占用
public void testPut(){
Scanner console=new Scanner(System.in);
int i=0;
while(i<3){
System.out.println("请输入学生ID:");
String ID=console.next();
//判断该ID是否被占用
Student st=students.get(ID);
if(st==null){
//输入学生姓名
System.out.println("请输入学生姓名:");
String name=console.next();
//创建新的学生对象
Student newStudent=new Student(ID,name);
//通过调用students的put方法,添加ID-学生映射
students.put(ID, newStudent);
System.out.println("成功添加学生:"+students.get(ID).name);
i++;
}else{
System.out.println("该学生ID已被占用!!");
continue;
}
}
}
//测试Map的KeySet方法
public void testKeySet(){
//通过keySet方法,返回Map中所有“键”的Set集合
Set<String> KeySet=students.keySet();
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(){
System.out.println("请输入要删除学生的Id!");
Scanner console=new Scanner(System.in);
while(true){
String ID=console.next();
Student st=students.get(ID);
if(st==null){
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(){
System.out.println("请输入要修改学生的Id!");
Scanner console=new Scanner(System.in);
while(true){
String stuID=console.next();
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值
public void testContansKeyOrValue(){
//在MAp中,用containsKey()方法判断是否包含某个key值
//用containsValue()方法,来判断是否包含某个Value值
System.out.println("请输入要查询学生的Id!");
Scanner console=new Scanner(System.in);
String id=console.next();
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();
if(students.containsValue(new Student(null,name)))
System.out.println("在映射表中确实包含学生:"+name);
else
System.out.println("在学生映射表中不存在该学生!");
}
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.testContansKeyOrValue();
}
}
SetTest类
package com.collection_map;
import java.util.ArrayList;
import java.util.Arrays;
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);
}
public void testAdd(){
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);
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);
}
//通过for each方法访问集合元素
public void testForEach(){
System.out.println("有如下课程可选(通过foreach):");
for(Object obj:coursesToSelect){
Course cr=(Course)obj;
System.out.println("课程:"+cr.id+":"+cr.name);
}
}
//测试List的contains方法
public void testListContains(){
Course course=coursesToSelect.get(0);
System.out.println("取得课程:"+course.name);
System.out.println("备选课程中是否包含课程:"+course.name+","+coursesToSelect.contains(course));
System.out.println("请输入课程名称:");
String name=console.next();
Course course2=new Course(course.id,course.name);
course.name=name;
System.out.println("新创建课程:"+course2.name);
System.out.println("备选课程中是否包含课程:"+course2.name+","+coursesToSelect.contains(course2));
//通过index()方法来取得某元素的索引位置
if(coursesToSelect.contains(course2))
System.out.println("课程:"+course2.name+"的索引位置为:"+coursesToSelect.indexOf(course2));
}
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遍历只能用for each或者iterator
// //Set中添加某个对象,无论添加多少次,最终只会保留一个该对象(第一次添加的)
// for(Course cr:student.courses){
// System.out.println("选择了课程:"+cr.id+":"+cr.name);
// }
}
}
StudentComparator类
package com.collection_map;
import java.util.Comparator;
public class StudentComparator implements Comparator<Student> {
@Override
public int compare(Student arg0, Student arg1) {
// TODO Auto-generated method stub
return arg0.name.compareTo(arg1.name);
}
}
TestGenetic类
package com.collection_map;
import java.util.ArrayList;
import java.util.List;
public class TestGenetic {
//带有泛型--Course的List类型属性
public List<Course> courses;
public TestGenetic(){
this.courses=new ArrayList<Course>();
}
public void testAdd(){
Course cr1=new Course("1","大学语文");
courses.add(cr1);
Course cr2=new Course("2","java");
courses.add(cr2);
//泛型集合中,不能添加泛型规定的类型及其子类型以外的对象,否则会报错
}
public void testForEach(){
for(Course cr:courses){
System.out.println(cr.id+":"+cr.name);
}
}
//泛型结合可以添加泛型的子类型的对象实例
public void testChild(){
ChildCourse ccr=new ChildCourse();
ccr.id="3";
ccr.name="我是子类型的课程类型实例";
courses.add(ccr);
}
//泛型不能使用基本类型
public void testBasicType(){
List<Integer>list=new ArrayList<Integer>();
list.add(1);
System.out.println("基本类型必须使用包装类作为泛型"+list.get(0));
}
public static void main(String[] args) {
// TODO Auto-generated method stub
TestGenetic tg=new TestGenetic();
tg.testAdd();
tg.testForEach();
tg.testChild();
tg.testForEach();
tg.testBasicType();
}
}