第十五天总结0409

第十五天总结:
1.Map的扩展
通过学习HashMap的扩展自己动手做一个TreeMap集合的嵌套
/*
需求:定义一个容器,存储某小学所有学生的期末考试成绩。
   1.元素有年级、班级、学生、成绩
   2.年级按照从高到低的顺序存储,班级按照从低到高的顺序存储
  学生按照成绩从高到低存储。
思路:1.首先定义一个年级的TreeMap集合,键是年级号,值是班级集合
   2.班级集合也是TreeMap结构,它的键是班级号,值是学生对象
   3.学生对象存放在TreeSet集合中。
  

*/
import java.util.*;
class GreadTreeMap<G,T,S>
{
 private Map<G,Map<T,Set<S>>> greadMap;
 GreadTreeMap()
 {
  greadMap=new TreeMap<G,Map<T,Set<S>>>();
 }
 /**
 @prama gread 年级;
 @parma team 班级;
 @parma stu 学生;
 */
 public void newPut(G gread,T team,S stu)
 {
  Map<T,Set<S>> teamMap=greadMap.get(gread);
  if (teamMap==null)
  {
   teamMap=new TreeMap<T,Set<S>>();
   greadMap.put(gread,teamMap);
  }
  Set<S> stuSet=teamMap.get(team);
  if (stuSet==null)
  {
   stuSet=new TreeSet<S>();
   teamMap.put(team,stuSet);
  }
  stuSet.add(stu);
 }
 /**
 *获得某个班的成绩表;
 @prama gread 年级;
 @parma team 班级;
 @return TreeSet<S> 成绩表。
 */
 public Set<S> getMarkList(G gread,T team)
 {
  return greadMap.get(gread).get(team);
 }
 /**
 *获得班级集合
 @prama gread 年级;
 @return Map<T,Set<S>> 班级集合;
 */
 public Map<T,Set<S>> getTeam(G gread)
 {
  return greadMap.get(gread);
 }
 /**
 *获得年级键集合
 @return Set<G> 年级键集合。
 */
 public Set<G> greadKeySet()
 {
  return greadMap.keySet();
 }
 /**
 *获得年级集合键值关系
 @return Set<Map.Entry<G,Map<T,Set<S>>>> 年级键值关系
 */
 public Set<Map.Entry<G,Map<T,Set<S>>>> greadEntrySet()
 {
  return greadMap.entrySet();
 }
 /**
 *获得班级键集合
 @prama gread 年级;
 @return Set<T> 班级键集合。
 */
 public Set<T> teamKeySet(G gread)
 {
  return getTeam(gread).keySet();
 }
 /**
 *获得班级集合的键值关系
 @prama gread 年级
 @return Set<Map.Entry<T,Set<S>>> 班级键值关系;
 */
 public Set<Map.Entry<T,Set<S>>> teamEntrySet(G gread)
 {
  return getTeam(gread).entrySet();
 }
 /**
 *获得年级的数量
 @return int 年级的数量
 */
 public int greadSize()
 {
  return greadMap.size();
 }
 /**
 *获得某年级的班级数量
 @prama 年级;
 @return int 班级的数量。
 */
 public int teamSize(G gread)
 {
  return getTeam(gread).size();
 }
 /**
 *获得某班参加考试的学生数量
 @prama gread 年级;2
 @prama team 班级;
 @return int 某班参加考试学生的数量;
 */
 public int stuSize(G gread,T team)
 {
  return getMarkList(gread,team).size();
 }
 /**
 *获得该学校的班级数量
 @return int 所有班级数量
 */
 public int getTeamSum()
 {
  int sum=0;
  for(G g:greadKeySet())
  {
   sum=sum+teamSize(g);
  }
  return sum;
 }
 /**
 *获得该学校所有参加考试的学生的数量
 @return int 所有参加考试的学生的数量
 */
 public int getStuSum()
 {
  int sum=0;
  for (G gread:greadKeySet())
  {
   for (T team:teamKeySet(gread) )
   {
    sum=sum+stuSize(gread,team);
   }
  }
  return sum;
 }
 /**
 返回GreadTreeMap的字符串表现形式
 @return String GreadTreeMap的字符串表现形式。
 */
 public String toString()
 {
  StringBuilder sb=new StringBuilder();
  sb.append("/t"+"/t"+"  镇中心小学期末成绩一览表"+"/n");
  sb.append("------------------------------------------------------------"+"/n");
  sb.append(" "+"年级"+"/t"+"班级"+"/t"+" 学号"+"/t"+" 姓名"+"/t"+"语文"+"/t"+"英语"+"/t"+"数学"+"/t"+"总分"+"/n");
  sb.append("------------------------------------------------------------"+"/n");
  for (G gread:greadKeySet() )
  {
   for(T team:teamKeySet(gread))
   {
    for (S stu:getMarkList(gread,team))
    {
     sb.append(gread.toString()+"/t"+team.toString()+"/t"+stu.toString()+"/n");
    }
    sb.append("------------------------------------------------------------"+"/n");
   }
  }
  return sb.toString();
 }
 /**
 *返回某个班级的成绩表
 @prama gread 年级
 @prama team 班级
 @return String stuSet的字符串表现形式
 */
 public String stuToString(G gread,T team)
 {
  StringBuilder sb=new StringBuilder();
  sb.append("     "+"镇中心小学"+gread.toString()+team.toString()+"期末成绩一览表"+"/n");
  sb.append("--------------------------------------------"+"/n");
  sb.append(" 学号"+"/t"+" 姓名"+"/t"+"语文"+"/t"+"英语"+"/t"+"数学"+"/t"+"总分"+"/n");
  sb.append("--------------------------------------------"+"/n");
  for (S stu:getMarkList(gread,team) )
  {
   sb.append(stu.toString()+"/n");
  }
  return sb.toString();
 }
}

class Gread implements Comparable
{
 private String name;
 private int ID;
 Gread(String name,int ID)
 {
  this.name=name;
  this.ID=ID;
 }
 public String getGreadName()
 {
  return name;
 }
 public int getGreadID()
 {
  return ID;
 }
 public int compareTo(Object obj)
 {
  Gread gread2=(Gread)obj;
  if (this.getGreadID()>gread2.getGreadID())
   return 1;
  else if(this.getGreadID()==gread2.getGreadID())
   return 0;
  return -1;
 }
 public String toString()
 {
  return this.getGreadName();
 }
}
class Team implements Comparable
{
 private String name;
 private int ID;
 Team(String name,int ID)
 {
  this.name=name;
  this.ID=ID;
 }
 public String getTeamName()
 {
  return name;
 }
 public int getTeamID()
 {
  return ID;
 }
 public int compareTo(Object obj)
 {
  Team team2=(Team)obj;
  if (this.getTeamID()>team2.getTeamID())
   return 1;
  else if(this.getTeamID()==team2.getTeamID())
   return 0;
  return -1;
 }
 public String toString()
 {
  return this.getTeamName();
 }
}
class Student implements Comparable
{
 private String name;
 private String ID;
 private int Chi,Eng,Mat;
 private int mark;
 Student(String name,String ID)
 {
  this.name=name;
  this.ID=ID;
 }
 Student(String name,String ID,int Chi,int Eng,int Mat)
 {
  this.name=name;
  this.ID=ID;
  this.Chi=Chi;
  this.Eng=Eng;
  this.Mat=Mat;
  this.mark=Chi+Eng+Mat;
 }
 public void setChi(int Chi,int Eng,int Mat)
 {
  this.Chi=Chi;
  this.Eng=Eng;
  this.Mat=Mat;
  this.mark=Chi+Eng+Mat;
 }
 public String getStuName()
 {
  return name;
 }
 public String getStuID()
 {
  return ID;
 }
 public int getChi()
 {
  return Chi;
 }
 public int getEng()
 {
  return Eng;
 }
 public int getMat()
 {
  return Mat;
 }
 public int getMark()
 {
  return mark;
 }
 public int compareTo(Object obj)
 {
  Student stu2=(Student)obj;
  if (this.getMark()>stu2.getMark())
   return -1;
  else if(this.getMark()==stu2.getMark())
   return this.getStuID().compareTo(stu2.getStuID());
  return 1;
 }
 public String toString()
 {
  return this.getStuID()+"/t"+this.getStuName()+"/t"+this.getChi()+"/t"+this.getEng()+"/t"+this.getMat()+"/t"+this.getMark();
 }
}
----------------------------------------------------------------------------
测试上面的程序
*/
import java.util.*;
class greadTreeMapDemo
{
 public static void main(String[] args)
 {
  GreadTreeMap<Gread,Team,Student> gt=new GreadTreeMap<Gread,Team,Student>();
  gt.newPut(new Gread("一年级",1),new Team("二班",2),new Student("张小毛","G10201",80,79,92));
  gt.newPut(new Gread("一年级",1),new Team("三班",3),new Student("李四","G10307",60,77,80));
  gt.newPut(new Gread("一年级",1),new Team("二班",2),new Student("王小明","G10209",12,100,92));
  gt.newPut(new Gread("一年级",1),new Team("二班",2),new Student("马小五","G10210",40,20,30));
  gt.newPut(new Gread("二年级",2),new Team("二班",2),new Student("张小毛","G20201",80,79,92));
  gt.newPut(new Gread("二年级",2),new Team("二班",2),new Student("周晓七","G20204",40,100,92));
  gt.newPut(new Gread("三年级",3),new Team("六班",6),new Student("王慧","G30610",90,30,100));
  gt.newPut(new Gread("三年级",3),new Team("一班",1),new Student("程九","G30102",70,60,20));
  gt.newPut(new Gread("五年级",5),new Team("十班",10),new Student("张小毛","G51029",90,90,90));
  gt.newPut(new Gread("三年级",3),new Team("六班",6),new Student("郑小小","G30620",100,100,100));
  gt.newPut(new Gread("三年级",3),new Team("六班",6),new Student("郑小小","G30620",100,100,100));
  gt.newPut(new Gread("一年级",1),new Team("二班",2),new Student("孙小猴","G10298",28,78,72));
  gt.newPut(new Gread("一年级",1),new Team("三班",3),new Student("王大大","G10307",20,100,100));
  gt.newPut(new Gread("一年级",1),new Team("二班",2),new Student("陈丫","G10228",92,70,98));
  gt.newPut(new Gread("一年级",1),new Team("二班",2),new Student("马小五","G10211",70,80,80));
  System.out.println(gt.toString());
  System.out.println(gt.stuToString(new Gread("一年级",1),new Team("二班",2)));
 }
}


2.集合工具类
String[] arr=al.toArray(new String[al.size()]);集合转数组,在往toArray中传递指定类型的数组时,最好长度指定为集合的长度。
Arrays专门用于操作数组的工具类
这个类里的方法全部是静态的。
List<T> list=Arrays.asList(T[] arr)数组变集合
数组变集合需要注意的是,数组长度是固定的,所以必成集合后不可以对其进行增删,否则运行出现不支持操作异常。
数组变集合其实不是形式上的变化,这是思想上的变化,我们可以用集合的思想来操作数组中的元素。
Collections这个类是操作集合的

 

 

 

 

 

 

 

 

 

 

 

 

 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值