8月22日学习杂记
2006-08-25 09:29
225 查看
Collection:集合
每一个集合应该提供的方法,比如最常用的(CRUD:增加,查看,修改和删除),以及查看集合属性的一些方法:removeAll,container,size等一些常用的方法.
各种集合处理相同事件的方法可能有所不同,如果集合的类型为SET,则在集合中不可以擦入相同的值,如果集合的类型为LIST,则在集合内部存放的顺序是按先后顺序存放的
HASHSET:
每一个对象都有HASHCODE的方法,返回一个整型的HASHCODE值,用SET类型存储的时候并不是按哈希值来存储的,但是通过某些算法,和哈希值有关的.
对果两个对象相等,则HASHCODE必须相等,如果对象不相等,则HASHODE值也可能相等.
TREESET:
在存储的时候会对两个对象进行比较大小,在比较大小的时候会去调用一个比较器,在比较器比较大小的时候会传入一个策略对象(一个新的模式--策略模式),比较两个对象的大小可有两种方式来处理:
1. 可以让自己定义的这个类去继承COMPARATOR实现COMPARE这个抽象方法.
2. 编写一个用于比较对象大小的类继承COMPARATOR类,同样这个类也要实现COMPARE这个抽象方法,抽象方法如下方法实现比较简洁:
public int compare(Object obj1,Object obj2){
Person p1 = (Person)obj1;
Person p2 = (Person)obj2;
return p1.height>p2.height ? 1 : (p1.height == p2.height ? 0: -1); //三目运算符? :的使用
}
Bags的概念:存放的时候可以没有顺序,并且允许有重复的值
组合:尽量使用组合,避免继承
第一种设计模式:专家设计模式(第一天所讲内容)
第二种设计模式:模板方法设计模式(主要优点是实现代码的复用,缺点是景响了程序的可扩展性,如子类继承了父类,父类中有方法A,子类的B方 法需要用到父类的A方法,可以直接调用,不用管其是如何实现的)
例:AbstractSet的removeAll方法就是采用这种模式写的,removeAll方法直接调用remove方法去实现该功能
第三种设计模式:策略模式
接受一个策略对象,然后根据这个对象的特有规则进行处理(按什么比较大小由策略对象来决定)
PROPERTY的优点:
可以方便程序的修改,再一个很重要的优点是可以对变量进行分类排放,增加代码的可读性
annotation注释
@Override写在第一行,说明下面的方法是要覆盖父类的相应方法(注意:@Override的首字母O一定要大写)
JAVA的泛型:
把一个集合规定放什么类型的对象 如:
1.HashSet<Student> hs = new HashSet<Student>; //定义一个HashSet,并且向这个HashSet中添加的对象必须是Student类型的
2.Iterator<Student> iter = hs.iterator(); //指定泛型,遍历器中的对象必须是Student类型的,这样,在从遍历器中取出的数据就不需 要进行强制类型转换,而直接就是Student类型的
while(iter.hasNext()){
Student st1=iter.next();
}
设计原则:
第一种原则:开闭原则,修改封闭,扩展开放
小规则:
一个测试类不需要成变量的时候不要定义成员变量, 这样给人比较烦索的感觉
每一个集合应该提供的方法,比如最常用的(CRUD:增加,查看,修改和删除),以及查看集合属性的一些方法:removeAll,container,size等一些常用的方法.
各种集合处理相同事件的方法可能有所不同,如果集合的类型为SET,则在集合中不可以擦入相同的值,如果集合的类型为LIST,则在集合内部存放的顺序是按先后顺序存放的
HASHSET:
每一个对象都有HASHCODE的方法,返回一个整型的HASHCODE值,用SET类型存储的时候并不是按哈希值来存储的,但是通过某些算法,和哈希值有关的.
对果两个对象相等,则HASHCODE必须相等,如果对象不相等,则HASHODE值也可能相等.
TREESET:
在存储的时候会对两个对象进行比较大小,在比较大小的时候会去调用一个比较器,在比较器比较大小的时候会传入一个策略对象(一个新的模式--策略模式),比较两个对象的大小可有两种方式来处理:
1. 可以让自己定义的这个类去继承COMPARATOR实现COMPARE这个抽象方法.
2. 编写一个用于比较对象大小的类继承COMPARATOR类,同样这个类也要实现COMPARE这个抽象方法,抽象方法如下方法实现比较简洁:
public int compare(Object obj1,Object obj2){
Person p1 = (Person)obj1;
Person p2 = (Person)obj2;
return p1.height>p2.height ? 1 : (p1.height == p2.height ? 0: -1); //三目运算符? :的使用
}
Bags的概念:存放的时候可以没有顺序,并且允许有重复的值
组合:尽量使用组合,避免继承
第一种设计模式:专家设计模式(第一天所讲内容)
第二种设计模式:模板方法设计模式(主要优点是实现代码的复用,缺点是景响了程序的可扩展性,如子类继承了父类,父类中有方法A,子类的B方 法需要用到父类的A方法,可以直接调用,不用管其是如何实现的)
例:AbstractSet的removeAll方法就是采用这种模式写的,removeAll方法直接调用remove方法去实现该功能
第三种设计模式:策略模式
接受一个策略对象,然后根据这个对象的特有规则进行处理(按什么比较大小由策略对象来决定)
PROPERTY的优点:
可以方便程序的修改,再一个很重要的优点是可以对变量进行分类排放,增加代码的可读性
annotation注释
@Override写在第一行,说明下面的方法是要覆盖父类的相应方法(注意:@Override的首字母O一定要大写)
JAVA的泛型:
把一个集合规定放什么类型的对象 如:
1.HashSet<Student> hs = new HashSet<Student>; //定义一个HashSet,并且向这个HashSet中添加的对象必须是Student类型的
2.Iterator<Student> iter = hs.iterator(); //指定泛型,遍历器中的对象必须是Student类型的,这样,在从遍历器中取出的数据就不需 要进行强制类型转换,而直接就是Student类型的
while(iter.hasNext()){
Student st1=iter.next();
}
设计原则:
第一种原则:开闭原则,修改封闭,扩展开放
小规则:
一个测试类不需要成变量的时候不要定义成员变量, 这样给人比较烦索的感觉
相关文章推荐
- 《网络规划设计师》学习杂记--第2章(5)
- 学习杂记
- Python学习杂记九
- spark:随机学习杂记--21
- FreeBSD学习杂记[zt]
- spark:学习杂记+wordcount(单词统计)--22
- 【Hibernate学习杂记】最简单的Hibernate配置实用
- Python学习杂记
- EF学习杂记3:如何及何时使用贪婪加载
- EF学习杂记27:如何实现BeforeSave Validation
- c++ primer 学习杂记3【标准IO库】
- 《网络规划设计师》学习杂记----第2章(3)
- 项目日记_springMVC 学习杂记 2
- 【OpenCV_C++】学习杂记
- Android学习杂记(四):Android应用遭遇错误导致崩溃之后自动重启
- Python学习零散杂记(2017-10-30)
- android学习杂记.1
- ARM920T及其MMU,Cache学习杂记 (四)
- spark:学习杂记+案例--41