汽车按价格排序
class Car implements Comparable{
//品牌
private String brand;
//价格
private double price;
//年限
private int useYears;
//排量
private double gas;
…省略getter/setter
public Car() {
}
public Car(String brand, double price, int useYears, double gas) {
this.brand = brand;
this.price = price;
this.useYears = useYears;
this.gas = gas;
}
public void run(){
System.out.printf(“品牌%s价格%f年限%d排量%f的汽车在行驶\n”,brand,price,useYears,gas);
}
@Override
public int compareTo(Car o) {
if(this.getPrice() > o.getPrice()){
return 1;
}else if(this.getPrice() < o.getPrice()){
return -1;
}else{
return 0;
}
}
}
public class Test1 {
public static void main(String[] args) {
//Arrays.asList(Object…) 返回List集合
List cars = Arrays.asList(
new Car(“宝马X6”,1000000,5,2.0),
new Car(“奔驰S600”,1500000,6,3.0),
new Car(“奥迪A6”,400000,3,2.5),
new Car(“别克”,150000,8,1.8),
new Car(“丰田”,140000,2,1.0));
//排序
Collections.sort(cars);
for(Car car : cars){
car.run();
}
}
}
==========================================================================
Comparator接口提供比较的方式,可以在运行时指定排序方式
Collections.sort(List集合,Comparator比较器)
interface Comparator{
int compare(T o1, T o2);
}
按多种方式进行排序
public static void main(String[] args) {
List cars = Arrays.asList(
new Car(“宝马X6”,1000000,5,2.0),
new Car(“奔驰S600”,1500000,6,3.0),
new Car(“奥迪A6”,400000,3,2.5),
new Car(“别克”,150000,8,1.8),
new Car(“丰田”,140000,2,1.0));
Scanner input = new Scanner(System.in);
System.out.println("请输入排序方式:1、价格 2、年限 3、排量 ");
int type = input.nextInt();
switch(type){
case 1:
//用匿名内部类实现Comparator,按价格排序
Collections.sort(cars,new Comparator(){
@Override
public int compare(Car o1, Car o2) {
if(o1.getPrice() > o2.getPrice()){
return 1;
}else if(o1.getPrice() < o2.getPrice()){
return -1;
}else{
return 0;
}
}
});
break;
case 2:
//按年限排序
Collections.sort(cars,new Comparator(){
@Override
public int compare(Car o1, Car o2) {
if(o1.getUseYears() > o2.getUseYears()){
return 1;
}else if(o1.getUseYears() < o2.getUseYears()){
return -1;
}else{
return 0;
}
}
});
break;
case 3:
//按排量排序
Collections.sort(cars,new Comparator(){
@Override
public int compare(Car o1, Car o2) {
if(o1.getGas() > o2.getGas()){
return 1;
}else if(o1.getGas() < o2.getGas()){
return -1;
}else{
return 0;
}
}
});
break;
}
for(Car car : cars){
car.run();
}
}
==================================================================
作用是对数据进行遍历,不需要考虑数据的数据结构,提供通用的遍历方式。
方法:
-
boolean hasNext() 判断数据是否还有下一个
-
T next() 向后移动,返回当前数据
实现该接口的对象,可以通过foreach循环遍历
方法:
- Iterator iterator() 返回迭代器
List接口继承Collection接口,Collection继承Iterable接口。
进行foreach循环时,会自动调用iterator(),返回迭代器对象,执行next和hasNext完成数据遍历
=======================================================================
Lambda表达式是Java1.8的重要特性,能使用非常简洁的代码,完成对接口的实现。
应用场景是:实现函数式接口(FunctionalInterface)
函数式接口通常只有一个需要实现的方法,如:Comparator
@FunctionalInterface
public interface Comparator {
int compare(T o1, T o2);
}
语法特点:
小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
最后
给大家送一个小福利
附高清脑图,高清知识点讲解教程,以及一些面试真题及答案解析。送给需要的提升技术、准备面试跳槽、自身职业规划迷茫的朋友们。
YKPR5Jb-1710970273658)]
[外链图片转存中…(img-YWkFzY4K-1710970273658)]
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
[外链图片转存中…(img-zR5kHgJD-1710970273659)]
最后
给大家送一个小福利
[外链图片转存中…(img-ljmzeUIa-1710970273660)]
附高清脑图,高清知识点讲解教程,以及一些面试真题及答案解析。送给需要的提升技术、准备面试跳槽、自身职业规划迷茫的朋友们。
[外链图片转存中…(img-1lefs9G5-1710970273660)]