搜索热点


Java第四课

何轩伟 2023-11-13 58 11/13
  1. compare表达式

要实现compareTo,其类必须包含Comparable接口

只有一个抽象方法的接口叫函数式接口

例Recrangle.java

public class Recrangle implements Comparable<Recrangle> {

private double w;

private double h;

 

public Recrangle(double w, double h) {

this.w = w;

this.h = h;

}

 

public double area(){

return w*h;

}

public double perimeter(){

return 2*(w+h);

}

 

 

@Override

public int compareTo(Recrangle o) {

 

double cur=this.area();

double another=o.area();

return Double.compare(cur,another);

}

 

public static void main(String[] args){

Recrangle r1=new Recrangle(5,6);

Recrangle r2=new Recrangle(9,4);

System.out.println(r1.compareTo(r2));

}

}

此处double类包含Comparable接口

Java第四课

compareTo只有一个显式参数,另外一个对象为隐式对象(调用此接口的)

Comparator接口有两个显式参数

2.lambda表达式组成

形如以下:

(o1,o2) -> Integer.compare(o1,o2)

左边 -> 右边

-> 被称为lambda操作符或箭头操作符

左边:lambda形参列表(其实就是接口中的抽象方法的形参列表)

右边:lambda体 (其实就是重写的抽象方法的方法体)

3.foreach循环(复习)

for(数据类型 变量 : 集合名称){

//代码句子

}

数据类型:该类型必须与集合中数据元素的类型一致;

变量:声明一个新的局部变量,其作用域限定在循环语句块内;

集合名称:这里可以是一个数组、集合的名称。

4.迭代器:Iterable接口(包含在lang中,不需要导入)

实例代码Student.java

import java.util.Iterator;

 

public class Student implements Iterable<String>{

private int id;

private String name;

private int age;

private String gender;

 

public Student(int id, String name, int age, String gender) {

this.id = id;

this.name = name;

this.age = age;

this.gender = gender;

}

 

public int getId() {

return id;

}

 

public String getName() {

return name;

}

 

public int getAge() {

return age;

}

 

public String getGender() {

return gender;

}

 

public void setAge(int age) {

this.age = age;

}

 

public static void main(String[] args) {

Student stu=new Student(990101,"Alice",20,"female");

for(String p:stu){

System.out.println(p);

}

}

 

@Override

public Iterator<String> iterator() {

return new MyIterator();

}

private class MyIterator implements Iterator<String>{

private int i=-1;

private String[] props={"id","name","age","gender"};

 

@Override

public boolean hasNext() {

if(++i<4){

return true;

}else{

return false;

}

}

 

@Override

public String next() {

return props[i];

}

}

}

此处line47中调用了Iterator接口,此接口有两个方法分别是

@Override

public boolean hasNext() {

if(++i<4){

return true;

}else{

return false;

}

}

 

@Override

public String next() {

return props[i];

}

}

hasNext和next方法(接口内的抽象方法默认就是public abstract,所以此处方法前的修饰符做了省略,即66行boolean前的修饰符和74行E前的修饰符为public abstract,只不过是省略了)

Java第四课

  • E next():返回迭代的下一个元素。
  • boolean hasNext():如果仍有元素可以迭代,则返回 true。

此处实例中返回true值的条件是++i<4,即返回props数组内的前四个(0,1,2,3)索引值。

当hasNext()方法返回false时(此处实例为i>=4时),就跳出接口,结束程序!

- THE END -
Tag:
最后修改:2023年11月13日
0

非特殊说明,本博所有文章均为博主原创。