定义长度为5的物品List集合,按照价格从高到低排序,查看排序结果。
创建集合
/**
- 排序
*/
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class ClientList {
public static void main(String[] args) {
// 创建对象
Item book = new Item(“本子”, 5, “白色”);
Item computer = new Item(“电脑”, 4999, “黑色”);
Item desk = new Item(“桌子”, 500, “褐色”);
Item chair = new Item(“椅子”, 50, “蓝色”);
Item cup = new Item(“杯子”, 20, “透明的”);
// 创建集合
List<Item> items = new ArrayList<Item>();
// 把对象添加到集合中
items.add(book);
items.add(computer);
items.add(desk);
items.add(chair);
items.add(cup);
System.out.println("-----原始集合内的排列-----");
// 遍历集合输出
for (Item item : items) {
System.out.println(item);
}
System.out.println();
System.out.println("-----价格:从高到低-----");
// 按照价格由高到低排序输出
//排序方式一:实现comparable接口的compareTo方法;
Collections.sort(items);
// 遍历输出
for (Item item : items) {
System.out.println(item);
}
System.out.println();
System.out.println("-----价格:从低到高-----");
// 按照价格由低到高排序
/*
* 排序方式二:实现comparator接口的compare方法
* 优点:可以不改变原来累的继承等内容,重新建一个类,写比较方法
*/
Collections.sort(items, new ItemComparator());
// 遍历输出
for (Item item : items) {
System.out.println(item);
}
}
}
物品类
/**
-
物品类
-
@author Administrator 实现了Comparable接口的方法compareTo;
/
public class Item implements Comparable {
/*- 名称
*/
private String name;
private double price;
private String color;
// 存取方法
public String getName() {
return name;
}public void setName(String name) {
this.name = name;
}public double getPrice() {
return price;
}public void setPrice(double price) {
this.price = price;
}public String getColor() {
return color;
}public void setColor(String color) {
this.color = color;
}/**
- 构造方法
*/
public Item(String name, double price, String color) {
super();
this.name = name;
this.price = price;
this.color = color;
}
@Override
public String toString() {
return “名称:” + this.name + “, 价格:” + this.price + “, 颜色:” + this.color;
}/**
- 方式一:实现comparable接口的方法; 排序(从大到小,可修改)
*/
@Override
public int compareTo(Item o) {
if (this.price > o.price) {
// 返回值为负数时,不需要交换,代表从大到小排序
return -1;// 也可以这样写 return this.price-o.price
}
if (this.price < o.price) {
return 1;
}
return 0;
}
}
- 名称
/**
- 方式二:实现comparator接口;
- 可以实现多个接口,用,分隔
- @author Administrator
/
class ItemComparator implements Comparator {
/*- 实现compare抽象方法 这里是从小到大排序,可修改
*/
@Override
public int compare(Item o1, Item o2) {
if (o1.getPrice() > o2.getPrice()) {
// 返回值为正数时,表示需要交换,表示从小到大排序
return 1;
} else if (o1.getPrice() < o2.getPrice()) {
// 返回值为负数是,表示不需要交换
return -1;
}
return 0;
}
- 实现compare抽象方法 这里是从小到大排序,可修改
}