Java集合框架1
1.顺序表(ArrayList)使用示例
例1. ArrayList使用示例。
package set; import java.util.*; import java.io.*; public class demoArrayList { public static void main(String[] args) { ArrayList<String> stu = new ArrayList<String>(); Scanner in = new Scanner(System.in); System.out.println("请输入学生的姓名,空行表示结束!"); String name; boolean goon = true; while(goon){ name = in.nextLine(); if(name.length()>0){ stu.add(name); System.out.println("添加成功:"+name); }else goon = false; } goon = true; System.out.println("请输入要删除的学生的姓名,空行表示结束!"); while(goon){ name = in.nextLine(); if(name.length()>0){ stu.remove(name); System.out.println("删除成功:"+name); }else goon = false; } System.out.println("剩下的学生姓名如下:"); for(String stuName:stu) System.out.println(stuName); in.close(); } }
2.链表(LinkedList)使用示例
例2. 猴子选大王。
package set; import java.util.*; public class monkey { public static void main(String[] args) { LinkedList<Integer> monkeys = new LinkedList<Integer>(); int number,cnt; for(number=1;number<=100;number++) monkeys.addLast(number); number = 0; cnt = 100; Iterator it = monkeys.iterator(); while(cnt>1){ if(it.hasNext()){ number++; it.next(); }else it = monkeys.iterator(); if(number == 14){ number = 0; it.remove(); cnt--; } } System.out.println("大王编号为:"+monkeys.element()); } }
程序运行结果如下:
大王编号为:92
3. 优先队列(PriorityQueue)使用示例
例3. 模拟操作系统的进程调度。
package set; public class job { private int number; //存放作业编号 private int spend; //存放作业所需时间 public job(int number, int spend) { this.number = number; this.spend = spend; } public int getNumber() { return number; } public void setNumber(int number) { this.number = number; } public int getSpend() { return spend; } public void setSpend(int spend) { this.spend = spend; } }
package set; import java.util.*; public class myCompare implements Comparator<job> { public int compare(job o1, job o2) { if(o1.getSpend()>o2.getSpend()) return 1; if(o1.getSpend()<o2.getSpend()) return -1; return 0; } public boolean equals(Object obj){ return super.equals(obj); } }
package set; import java.util.*; import java.io.*; public class scheduling { public static void main(String[] args) { Scanner in = new Scanner(System.in); myCompare mycom = new myCompare(); PriorityQueue<job> priQue = new PriorityQueue<job>(20,mycom); System.out.println("请依次输入作业所需时间,0表示结束"); boolean goon = true; int time; for(int cnt=1;goon;cnt++){ System.out.print("作业"+cnt+"所需时间为:"); time = in.nextInt(); if(time>0) priQue.add(new job(cnt,time)); else goon = false; } System.out.println("作业调度的顺序为:"); while(priQue.size()>0){ job jb = priQue.poll(); System.out.println("作业编号:"+jb.getNumber()+" 所需运行时间:"+jb.getSpend()); } } }
程序运行结果如下:
请依次输入作业所需时间,0表示结束 作业1所需时间为:156 作业2所需时间为:92 作业3所需时间为:41 作业4所需时间为:285 作业5所需时间为:77 作业6所需时间为:869 作业7所需时间为:12 作业8所需时间为:326 作业9所需时间为:1 作业10所需时间为:99 作业11所需时间为:0 作业调度的顺序为: 作业编号:9 所需运行时间:1 作业编号:7 所需运行时间:12 作业编号:3 所需运行时间:41 作业编号:5 所需运行时间:77 作业编号:2 所需运行时间:92 作业编号:10 所需运行时间:99 作业编号:1 所需运行时间:156 作业编号:4 所需运行时间:285 作业编号:8 所需运行时间:326 作业编号:6 所需运行时间:869
4. 哈希集合(HashSet)使用示例
例4. HashSet使用示例。
package set; import java.util.*; import java.io.*; public class demoHashSet { public static void main(String[] args) { HashSet<String> stu = new HashSet<String>(); Scanner in = new Scanner(System.in); System.out.println("请输入学生的姓名,空行表示结束!"); String name; boolean goon = true; while(goon){ name = in.nextLine(); if(name.length()>0) if(stu.add(name)) System.out.println("学生添加成功:"+name); else System.out.println("学生添加失败:"+name); else goon = false; } goon = true; System.out.println("请输入要删除的学生姓名,空行表示结束!"); while(goon){ name = in.nextLine(); if(name.length()>0) if(stu.remove(name)) System.out.println("学生删除成功:"+name); else System.out.println("学生删除失败:"+name); else goon = false; } System.out.println("剩余的学生姓名如下:"); for(String stuName : stu) System.out.println(stuName);
in.close(); } }
程序运行结果如下:
请输入学生的姓名,空行表示结束!
张三
学生添加成功:张三
李四
学生添加成功:李四
王五
学生添加成功:王五
赵六
学生添加成功:赵六
孙七
学生添加成功:孙七
郑八
学生添加成功:郑八
请输入要删除的学生姓名,空行表示结束!
王五
学生删除成功:王五
郑八
学生删除成功:郑八
剩余的学生姓名如下:
赵六
孙七
张三
李四
5. 哈希映射(HashMap)使用示例
例5. 哈希映射使用示例。
package set; import java.util.*; import java.io.*; public class demoHashMap { public static void main(String[] args) { HashMap<String,Integer> stu = new HashMap<String,Integer>(); Scanner in = new Scanner(System.in); System.out.println("请依次输入学生的姓名和成绩,空行表示结束"); String name; Integer score; boolean goon = true; while(goon){ System.out.println("请输入学生的姓名:"); name = in.nextLine(); if(name.length()>0){ System.out.println("请输入学生的成绩:"); score = new Integer(in.nextLine()); stu.put(name, score); }else goon = false; } goon = true; System.out.println("请输入要查找学生的姓名,空行表示结束"); while(goon){ System.out.println("学生姓名:"); name = in.nextLine(); if(name.length()>0){ score = stu.get(name); if(score!=null) System.out.println(name+"成绩为:"+score); else System.out.println("要查找的人不存在"); } else goon = false; } in.close(); } }
程序运行结果如下:
请依次输入学生的姓名和成绩,空行表示结束 请输入学生的姓名: 张三 请输入学生的成绩: 90 请输入学生的姓名: 李四 请输入学生的成绩: 80 请输入学生的姓名: 请输入要查找学生的姓名,空行表示结束 学生姓名: 张三 张三成绩为:90 学生姓名: 王五 要查找的人不存在 学生姓名:
6. 有序树(TreeSet)使用示例
例6. TreeSet使用示例。
package set; public class Student { private String name; private int score; public Student(String name, int score) { this.name = name; this.score = score; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getScore() { return score; } public void setScore(int score) { this.score = score; } }
package set; import java.util.*; public class CompareScore implements Comparator<Student> { public int compare(Student o1, Student o2) { if(o1.getScore()<o2.getScore()) return 1; if(o1.getScore()>o2.getScore()) return -1; return 0; } public boolean equals(Object obj){ return super.equals(obj); } }
import java.io.*; public class demoTreeSet { public static void main(String[] args) { Scanner in = new Scanner(System.in); CompareScore com = new CompareScore(); TreeSet stu = new TreeSet(com); System.out.println("请依次输入学生的姓名和成绩,空行表示结束!"); String name; Integer score; boolean goon = true; while(goon){ System.out.println("请输入学生的姓名:"); name = in.nextLine(); if(name.length()>0){ System.out.println("请输入学生的成绩:"); score = new Integer(in.nextLine()); if(stu.add(new Student(name,score))) System.out.println("学生添加成功:"+name); else System.out.println("学生添加失败:"+name); } else goon = false; } in.close(); System.out.println("学生成绩按降序排序为:"); Iterator it = stu.iterator(); Student s; while(it.hasNext()){ s = (Student)it.next(); System.out.println("姓名:"+s.getName()+" 成绩:"+s.getScore()); } } }
程序运行结果如下:
请依次输入学生的姓名和成绩,空行表示结束! 请输入学生的姓名: 张丽 请输入学生的成绩: 78 学生添加成功:张丽 请输入学生的姓名: 王杰 请输入学生的成绩: 88 学生添加成功:王杰 请输入学生的姓名: 唐勇 请输入学生的成绩: 65 学生添加成功:唐勇 请输入学生的姓名: 叶文 请输入学生的成绩: 92 学生添加成功:叶文 请输入学生的姓名: 学生成绩按降序排序为: 姓名:叶文 成绩:92 姓名:王杰 成绩:88 姓名:张丽 成绩:78 姓名:唐勇 成绩:65
7. 有序树映射类(TreeMap)使用示例
例7. TreeMap使用示例。
package set; import java.util.*; import java.io.*; public class demoTreeMap { public static void main(String[] args) { TreeMap stu = new TreeMap(); Scanner in = new Scanner(System.in); System.out.println("请依次输入学生的姓名和成绩,空行表示结束!"); String name; Integer score; boolean goon = true; while(goon){ System.out.println("请输入学生的姓名:"); name = in.nextLine(); if(name.length()>0){ System.out.println("请输入"+name+"的成绩:"); score = new Integer(in.nextLine()); stu.put(name, score); }else goon = false; } goon = true; System.out.println("请输入要查找的学生姓名,空行表示结束!"); while(goon){ name = in.nextLine(); if(name.length()>0){ score = (Integer) stu.get(name); if(score != null) System.out.println("姓名:"+name+" 成绩:"+score); else System.out.println("没有找到学生:"+name); }else goon = false; } in.close(); } }
程序运行解过如下:
请依次输入学生的姓名和成绩,空行表示结束! 请输入学生的姓名: 王长喜 请输入王长喜的成绩: 85 请输入学生的姓名: 张丽 请输入张丽的成绩: 91 请输入学生的姓名: 王杰 请输入王杰的成绩: 75 请输入学生的姓名: 请输入要查找的学生姓名,空行表示结束! 王杰 姓名:王杰 成绩:75