目录
一.Iterator的三个方法:hasNext()、next()、remove()
当创建完成指向某个集合或者容器的Iterator对象时,此时指针指向第一个元素的上方,即空。
当调用hasNext()方法时,判断下一个元素的有无,并不移动指针,当下面没有元素时,停止移动,常用于遍历集合判断循环结束。
当调用next()方法时,向下移动指针,并且返回指针指向的元素,如果指针指向的内存中没有元素,报异常,常用于遍历集合取数。
当调用remove()方法时,删除指针指向的元素,如果当前指针指向的内存中没有元素,那么同样会抛出异常。
对应扑克牌读取每个人手牌,遍历集合
`
private static void printSet(TreeSet<Poke> pokes) {// 模拟看牌的方法
for (Iterator<Poke> iterator = pokes.iterator(); iterator.hasNext();) { //没有指针下移操作,只是判断是否存在下一个元素,没有下一个元素时退出循环
Poke poke = iterator.next(); //指针下移
System.out.print(poke.getName() + " ");
}
System.out.println();
}
}
二.set集合(HashSet类和TreeSet类)
HashSet类由一个哈希表支持,不保证Set的迭代顺序
TreeSet类实现在遍历集合时按照自然顺序递增排序,也可以按照指定比较器递增排序,其中comparator()方法返回对此Set集合中的元素进行排序的比较器((如果此Set使用自然规律,返回null)
class MyCompare implements Comparator<Poke> {// 自定义比较器,创建类实现Comparator()方法,是返回此set中元素进行递增排序的比较器
public int compare(Poke o1, Poke o2) { // 通过比较牌的序号来确定排序位置
return o1.getCode()-o2.getCode();
}
}
TreeSet<Poke> last = new TreeSet<Poke>(new MyCompare()); // 底牌 TreeSet类实现set类按指定比较器递增排序
TreeSet<Poke> one = new TreeSet<Poke>(new MyCompare()); // 玩家1的牌
TreeSet<Poke> two = new TreeSet<Poke>(new MyCompare()); // 玩家2的牌
TreeSet<Poke> three = new TreeSet<Poke>(new MyCompare()); // 玩家3的牌
三.this关键字,类的构造方法
class Poke { // 扑克牌类
private int code; // 扑克牌序号,用来对牌排序(定义一个int型成员变量)
private String name; // 扑克牌名称,用来对牌排序(定义一个String型成员变量)
public Poke(int code, String name) { //定义Poke有参构造方法,可以为成员变量赋值
this.code = code;
this.name = name;
}
public int getCode() { //getCode()方法中,方法返回值为int类,使用return code形式将int类对象返回
return code;
}
public void setCode(int code) { //定义一个setCode()方法,将参数值赋予类中的成员变量
this.code = code;
}
public String getName() { //getName()方法中,方法返回值为String类,使用return name形式将String类对象返回
return name;
}
public void setName(String name) { //定义一个setName()方法,将参数值赋予类中的成员变量
this.name = name;
}
}
对于this name=name,将形参name的值赋给成员变量name。
如果省略关键字直接写出name=name,那只是把参数name赋值给参数变量本身而已,成员变量name值没有改变,因为参数name在方法的作用域内覆盖了成员变量name。
类的构造方法:public Poke(参数1,参数2){
…//构造方法体
}
构造方法没有返回值,且构造方法的名称要与本类的名称相同;
构造方法中可以为成员变量赋值,当实例化一个本类的对象时,相应的成员变量也将被初始化。
四.运行结果
实现每个人手牌是有序的(按花色不同,序号递增来排)
五.java编程规范
采用该领域的术语,不去创造一些普通的词汇
采用大小写混合,提高名字的可读性。一般应该采用小写字母,但是类和接口的名字的首字母,以及任何中间单词的首字母应该大写。
尽量少用缩写,
包的命名都是使用小写的英文字母组成,每个包名称之间用点号分隔开来。如java.lang;javax.servlet.http 等
全局包的名字用所在机构的 Internet 保留域名开头。如:com.sun com.oracle. 等等
标准 Java类约定是使用完全的英文描述符,所有单词的第一个字母要大写,并且单词中大小写混合。类名应是单数形式。(如Customer)
采用完整的英文描述符说明接口封装,所有单词的第一个字母大写。习惯上,名字后面加上后缀 able,. ible 或者 er。(如Runnable接口)
成员函数的命名应采用完整的英文描述符,大小写混合使用:所有中间单词的第一个字母大写。成员函数名称的第一个单词常常采用一个有强烈动作色彩的动词。
openAccount()
获取函数作为一个成员函数,返回一个字段的值。除了布尔字段之外,应采用 get 作为字段的前缀;布尔字段采用 is 作为前缀。
public String getUserCode() {
设置函数,也叫变值函数,是可以修改一个字段值的成员函数。无论何种字段类型,都要在字段名的前面加上 set 前缀。
public void setUserCode(String userCode) {
目前理解这些,日后再补充吧