什么是迭代器???
提供一种方法访问一个容器对象中各个元素,而又不需暴露该对象的内部细节。
迭代器Iteartor接口中,有以下3个方法:
1.hasNext() 该方法判断集合对象是否还有下一个元素,如果已经是最后一个元素则返回false
2.next() 把迭代器的指向移到下一个位置,同时,该方法返回下一个元素的引用
3.remove() 从迭代器指向的Collection中移除迭代器返回的最后一个元素
conparable和compator
.Comparable接口的使用
此接口强行对实现它的类的每个对象进行整体排序。此排序被称为该类的自然排序 ,类的 compareTo 方法被称为它的自然比较方法 。实现此接口的对象列表(和数组)可以通过 Collections.sort (和 Arrays.sort )进行自动排序。
下面看一个实例如何使用comparable接口实现对象排序:设计一个学生类,此类包含姓名、年龄、成绩,产生一个对象数组,要求按成绩由高到低排序,如果成绩相等,则按照年龄由低到高排序。
步骤:
1.创建学生类实现Comparable接口覆写compareTo()方法
2.调用java.util.Arrays.sort()方法排序
class Person implements Comparable<Person3>{
private String name;
private int age;
private double score;
public Person(String name, int age, double score) {
super();
this.name = name;
this.age = age;
this.score = score;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + ", score=" + score
+ "]";
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public double getScore() {
return score;
}
public void setScore(double score) {
this.score = score;
}
@Override
public int compareTo(Person o) {
// TODO Auto-generated method stub
return age-o.age;
}
}
Comparator接口的使用
如果一个类已经开发完成,但是此类建立的初期并没有实现Comparable接口,此时肯定是无法进行对象排序操作的。所以Java在java.util包中定义了Comparator接口
创建StudentComparator类实现Comprator接口覆写compare()方法定义比较规则
调用java.util.Arrays.sort()方法
package study;
import java.util.Arrays;
import java.util.Comparator;
/**
* 描述:TODO
*
* @author ASUS
* @date 2018年8月4日
*/
public class ComparatorDemo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Student1 [] array = new Student1[3];
array [0] = new Student1("caocao",58,89.7);
array [1] = new Student1("liubei",48,69.7);
array [2] = new Student1("sunquan",28,79.7);
Arrays.sort(array, new Comparator<Student1>(){
//传入的时候由用户自己选
@Override
public int compare(Student1 o1, Student1 o2) {
// TODO Auto-generated method stub
int age1 = o1.getAge();
int age2 = o2.getAge();
return age1 > age2 ? age1:(age1==age2) ? 0:-1;
}
});
System.out.println(Arrays.toString(array));
}
}
class Student1 {
private String name;
private int age;
private double score;
/**
* @param name
* @param age
* @param score
*/
public Student1(String name, int age, double score) {
super();
this.name = name;
this.age = age;
this.score = score;
}
@Override
public String toString() {
return "Student1 [name=" + name + ", age=" + age + ", score=" + score + "]";
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public double getScore() {
return score;
}
public void setScore(double score) {
this.score = score;
}
}
java第三次考试简答题补充
猜你喜欢
转载自blog.csdn.net/qq_41974391/article/details/81414313
今日推荐
周排行