其他分享
首页 > 其他分享> > TreeSet错题

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