ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

TreeSet错题

2022-05-14 21:00:07  阅读:148  来源: 互联网

标签:int System 错题 Book result println out TreeSet


键盘输入3本书按照价格从低到高排序后输出,如果价格相同则按照书名的自然顺序排序;

要求:

1:书以对象形式存在,包含书名和价格(int类型)两个属性;

2:要求即使直接打印书对象的时候,也能看到书的名称和价格,而不是书对象的地址值;

3:分别使用自然排序和比较器排序实现效果;

效果:

参考答案:

自然排序方式:

public class Book implements Comparable<Book>{
   private String name;
   private int price;
//空参有参,get/set,otString自己加
   @Override
   public int compareTo(Book o) {
       int result = this.price - o.price;
       result = result == 0 ? this.name.compareTo(o.getName()) : result;
       return result;
  }
}



public static void main(String[] args) {
       TreeSet<Book> bookTreeSet = new TreeSet<>();
       Scanner sc = new Scanner(System.in);
       int i = 1;
       while (true) {
           System.out.println("请输入第" + i + "本书的名称:");
           String name = sc.next();
           System.out.println("请输入第" + i + "本书的价格:");
           int price = sc.nextInt();
           Book b1 = new Book(name, price);
           bookTreeSet.add(b1);
           i++;
           System.out.println("添加" + name + "书已成功,继续添加请输入1,输入其他数字将结束!");
           int jixu = sc.nextInt();
           if (jixu != 1) {
               break;
          }
      }

       System.out.println("您一共添加了" + bookTreeSet.size() + "本书,分别是:");
       for (Book book : bookTreeSet) {
           System.out.println(book);
      }
  }
}

比较器方式:

public static void main(String[] args) {
       TreeSet<Book> bookTreeSet = new TreeSet<>(new Comparator<Book>() {
           @Override
           public int compare(Book o1, Book o2) {
               //o1表示现在要存入的那个元素
               //o2表示已经存入到集合中的那个元素
               int result = o1.getPrice()-o2.getPrice();
               result = result == 0 ? o1.getName().compareTo(o2.getName()) : result;
               return result;
          }
      });
       Scanner sc = new Scanner(System.in);
       int i = 1;
       while (true) {
           System.out.println("请输入第" + i + "本书的名称:");
           String name = sc.next();
           System.out.println("请输入第" + i + "本书的价格:");
           int price = sc.nextInt();
           Book b1 = new Book(name, price);
           bookTreeSet.add(b1);
           i++;
           System.out.println("添加" + name + "书已成功,继续添加请输入1,输入其他数字将结束!");
           int jixu = sc.nextInt();
           if (jixu != 1) {
               break;
          }
      }

       System.out.println("您一共添加了" + bookTreeSet.size() + "本书,分别是:");
       for (Book book : bookTreeSet) {
           System.out.println(book);
      }
  }
}

标签:int,System,错题,Book,result,println,out,TreeSet
来源: https://www.cnblogs.com/aginbak/p/16271483.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有