Java:List排序练习

该篇文章介绍了如何使用JavaList接口和其实现类(ArrayList)来存储并按价格排序五本图书,通过冒泡排序算法完成排序,然后遍历输出。涉及到的知识点包括迭代器、动态绑定、向下转型等。
摘要由CSDN通过智能技术生成

使用List实现类添加五本图书,如图所示:
在这里插入图片描述

要求:按价格从低到高排序,然后遍历输出

这道题用到的知识点有:List接口、实现类以及相关的方法;迭代器遍历;动态绑定机制;向下转型冒泡排序

实现代码如下:

package com.wyz.test;


import java.util.ArrayList;
import java.util.List;

public class test{
    public static void main(String[] args) {
        int temp;
        List list = new ArrayList();
        list.add(new Book("红楼梦", "曹雪芹", 100));
        list.add(new Book("西游记", "吴承恩", 10));
        list.add(new Book("水浒传", "施耐庵", 9));
        list.add(new Book("三国演义", "罗贯中", 80));
        list.add(new Book("西游记", "吴承恩", 10));
        int[] price = new int[list.size()];
        for(int i = 0; i < list.size(); i++){
            Book book = (Book) list.get(i);
            price[i] =  book.getPrice();
        }
        for(int i = 0; i < list.size() - 1; i++){
            int flag = 0; //标记
            for (int j = 0; j < list.size() - i - 1; j++){
                if(price[j] > price[j + 1]){
                    flag = 1; //如果标记没有改变说明已经排序完成,不需要继续进行排序
                    temp = price[j];
                    price[j] = price[j + 1];
                    price[j + 1] = temp;
                    exchange(list, (Book) list.get(j), (Book) list.get(j + 1), j);
                }
            }
            if(flag == 0){
                break;
            }
        }
        for (Object o : list) {
            System.out.println(o);
            System.out.println("-------------");
        }
    }

    public static void exchange(List list, Book book1, Book book2, int index){
        Book book3 = new Book(book1.getName(), book1.getWriter(), book1.getPrice());
        list.set(index, book2);
        list.set(index + 1, book3);
//        注意不能使用下面的语句进行交换,indexOf()方法会返回第一次出现的下标。
//        第一条语句执行结束后,book2位置已经改变了,第二条语句会返回前一个位置
//        list.set(list.indexOf(book1), book2);
//        list.set(list.indexOf(book2), book3);
    }
}

class Book{
    private String name;
    private String writer;
    private int price;

    public String getName() {
        return name;
    }

    public String getWriter() {
        return writer;
    }

    public int getPrice() {
        return price;
    }

    public Book(String name, String writer, int price) {
        this.name = name;
        this.writer = writer;
        this.price = price;
    }

    @Override
    public String toString() {
        return "书名:" + name + "\n作者:" + writer + "\n价格:" + price;
    }
}

输出结果:
在这里插入图片描述

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wistain

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值