【问题标题】:display the weight of balls in ascending order按升序显示球的重量
【发布时间】:2021-01-13 17:51:06
【问题描述】:

现在信息按顺序显示(按球号)如何按升序显示球的重量?

public class WorkWithBall {
public static double WeightBall(){
    Random random = new Random();
    return random.nextInt(10)/2.5+1;
}

public class WorkWithBasket {
public static Basket fillBasket(Basket basket){
    for(int i =0; i < basket.getVolume(); i++){
        Ball temp = new Ball(Color.getRandomColor(),WorkWithBall.WeightBall());
        basket.addBall(temp);
    }
    return basket;
}
public static void InfoOut (Basket basket){
    for (int i = 0; i < basket.getBasket().length; i++){
        System.out.println("Ball #" + (i+1) + " with color - " + basket.getBasket()[i].getColor()+
                " weight - " + basket.getBasket()[i].getWeight());
    }
}

【问题讨论】:

  • 如果您可以使用列表而不是数组,请参阅here
  • 可以发一下class Basket的代码吗?

标签: java


【解决方案1】:

使用 Java 8,从 balls 数组中获取一个流。按重量排序,如下:

Stream.of(basket.getBasket()).sorted(Comparator.comparing(Ball::getWeight)).forEach(ball -> {
            System.out.println(ball.getColor() + " " + ball.getWeight());
        });

【讨论】:

    【解决方案2】:

    您应该使用Streamsorted() 之类的

    public static void InfoOut (Basket basket){
        Arrays.stream(basket.getBasket()).sorted(Comparator.comparing(Ball::getWeight)).forEach((Ball ball) -> {
            System.out.println("Ball #" + (i+1) + " with color - " + basket.getBasket()[i].getColor()+ " weight - " + basket.getBasket()[i].getWeight());
        })
    }
    

    另外请注意,您的打印应该放在 BalltoString 方法中,从 Object 类中覆盖。
    你可能会像

    这样简化流
    Arrays.stream(basket.getBasket()).sorted(Comparator.comparing(Ball::getWeight)).forEach(System.out::println);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-19
      • 2019-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-11
      • 1970-01-01
      相关资源
      最近更新 更多