黑马程序员_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基础--类和类之间的基本关系

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-第一讲>>>>继承注意:千万不要随便用继承,为了获取其他类的功能简化代码而继承,必须是累与类之间有所属关系才可以继...

黑马程序员-Java中的子类和父类之间转换的一点心得。

---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------...
  • luili16
  • luili16
  • 2014年07月18日 07:22
  • 365

黑马程序员——08Java类与类之间的四种关系分析

------------android培训、java培训、期待与您交流!------------   1,Unified Modeling Language (UML)又称统一建模...

黑马程序员——Java基础——continue、break、return之间的区别

有段时间,看到这三个关键字,不太清楚他们之间有什么区别,有什么用处,怎么用? 后来我反复看了下毕向东老师和刘意老师的视频结合在网上查的资料学习了并了解了他们的区别和应用。下面我将对此三者的区别做去介绍...

黑马程序员——JAVA基础---线程之间的通信实现交替输出打印

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------  线程之间的通信实现交替输出打印   多线程操作同一共享数据   一个线程,负责给数据赋值...

【黑马程序员】Java基础01:进制之间的互相转换

------- android培训、java培训、期待与您交流! ---------- 进制的种类:   当前的计算机系统使用的都是二进制数据,它是用0和1两个数字来表示的。进位规则是“逢二进一...

黑马程序员:Java基础——多线程之间的通信

------- Java EE培训、java培训、期待与您交流! ----------

黑马程序员(三):集合和数组之间的互相转变。

集合和数组之间的互相转变。 :首先集合变数组: 应用的是collection的 t[]toArray(T[] a)方法 演示一下 import java.util.*; c...

黑马程序员——JAVA基础——集合---概述、Collection中共性方法、List、Map、工具类Collections和Arrays

-----------android培训、java培训、java学习型技术博客、期待与您交流!------------...

黑马程序员-- java集合类--Vector/泛型

  集合类--Vector/泛型   Java用集合类来容纳不同种类的数据,java.util包中提供的向量(Vector)类就是集合类的一种。       该类是Java语言为解决数组长度和元素类型...
  • whf769
  • whf769
  • 2011年06月10日 12:02
  • 864
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:黑马程序员_java集合在类之间存在包含体现
举报原因:
原因补充:

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