黑马程序员_java集合在类之间存在包含体现

原创 2015年11月18日 00:14:07
------- android培训java培训、期待与您交流! ----------


一个学校会有很多个班级,每个班级又会对应很多学生,可通过上级类中包含下级类的集合来实现.


/*       ------学 -------校--------
 *      |  班级号A——————————班级体A
 *  | 学号——姓名
 *  | 学号——姓名
 *  | 学号——姓名
 *  |   ...
 *  |
 *      |   班级号B——————————班级体B
 *  |  ......
 */


import java.util.Collection;

import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;



class Student implements Comparable<Student>{
private String id ;
private String name ;
public Student(String id, String name) {
super();
this.id = id;
this.name = name;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((id == null) ? 0 : id.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {

if (obj == null)
return false;
if (getClass() != obj.getClass())
throw new ClassCastException(obj + "不能被转成Student类对象");
Student other = (Student) obj;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
throw new RuntimeException(name+"的id:"+id+"已被"+other.name+"所使用");
return true;
}

@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + "]";
}

public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public int compareTo(Student o) {

int num = id.compareTo(o.id);

if(num == 0){
if( !(this.toString().equals(o.toString())))
throw new RuntimeException(name+"的id:"+id+"已被"+o.name+"所使用");
return 0 ;
}
return num ;
}


}


class Banji implements Comparable<Banji>{

private String name;
private Collection<Student> studentColl ; //Banji 里定义学生集合
public Banji(String ronmName, Collection<Student> studentColl) {
super();
this.name = ronmName;
this.studentColl = studentColl;
}
Banji(String name){
this.name = name ;
this.studentColl = new TreeSet<Student>();
}
Banji(String name ,TreeSet<Student> studentColl){
this.name = name ;
this.studentColl = studentColl;
}

//提供相应的方法来管理学生集合
public boolean addStudent(Student stu){
return studentColl.add(stu);
}
public Student removeStudentByid(String id){
for(Iterator<Student> it = studentColl.iterator() ; it.hasNext() ;){
Student s = it.next();
if( s.getId().equals(id)){
it.remove();
return s;
}
}
return null;
}
@Override
public int compareTo(Banji o) {
// TODO Auto-generated method stub
return 0;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}

}

java中的面向对象和类之间的关系

1、面向对象    a、分析问题中需要用到哪些类以及对象    b、分析以上类中或对象中应该具有哪些属性及方法    c、分析类之间的关系    (合适的方法应该出现在合适的类中)   2、...
  • zhanghaobin1991
  • zhanghaobin1991
  • 2016年05月10日 09:02
  • 1098

在循环中删除集合的元素

package test; import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; publ...
  • Holmezhao
  • Holmezhao
  • 2016年08月21日 20:12
  • 86

Java中集合循环删除元素的问题

1、在一个循环中删除一个列表中的元素 思考下面这一段在循环中删除多个元素的的代码 Java代码 ArrayList list = new ArrayList(Array...
  • dc2222333
  • dc2222333
  • 2017年10月30日 11:15
  • 76

循环遍历中删除集合的元素

一般在java的增强for循环中删除结合的元素
  • as3517833
  • as3517833
  • 2014年05月29日 16:51
  • 394

集合分解

package com.chris.test; import java.util.ArrayList; import java.util.List; public class Resolve { ...
  • shichen2010
  • shichen2010
  • 2015年12月08日 13:03
  • 291

高级函数(分组排序和集合操作)

DECODE(expr,search1,result1,search2,result2,...)
  • mafan121
  • mafan121
  • 2014年09月19日 01:56
  • 689

java两个类相互持有引用的小问题

今天在写一个小程序中遇到一个问题,我想在两个类中相互持有引用,比如: 1. 一个类是画板,另一个类是画板中一个图形; 2. 画板必须持有图形的引用才能绘制图形; 3. 图形希望能够根据自身一些属性改变...
  • GVFDBDF
  • GVFDBDF
  • 2016年03月07日 13:56
  • 3619

黑马程序员:Java学习路线大揭秘连载2-JavaWeb篇!

编程语言Java,已经21岁了。从1995年诞生以来,就一直活跃于企业中,名企应用天猫,百度,知乎......都是Java语言编写,就连现在使用广泛的XMind也是Java编写的。Java应用的广泛已...
  • itcast_cn
  • itcast_cn
  • 2016年10月18日 17:44
  • 1485

黑马程序员_我的Linux基础整理笔记

Linux Linux文件目录和分区 文件目录: /:根目录 /root:存放root用户的相关文件 /home:存放普通用户的相关文件 /bin:存放普通用户的可执行命令 /sbin:...
  • zhengzhongjie1990
  • zhengzhongjie1990
  • 2014年07月05日 17:08
  • 1698

Hoj1412 求两个集合的和{A} + {B}——java实现最优解的辛酸路

写在前面 寒假闲来无事,突发奇想,想A俩题玩玩,许久没A过题了,想想那手指暴力敲击键盘的感觉就是一阵酸爽啊。 做的前几个题还挺顺溜,大概半个小时一个题吧,A了三四个,谁知道到第...
  • u011446177
  • u011446177
  • 2015年01月25日 13:29
  • 1172
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:黑马程序员_java集合在类之间存在包含体现
举报原因:
原因补充:

(最多只允许输入30个字)