2019-03-23 周测试题 第5题

定义长度为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;
      }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值