简体   繁体   English

在java中应用lambda表达式

[英]applying lambda expression in java

Here's my code.I'm not yet familliar with lambda expressions in java 8.这是我的代码。我还不熟悉 java 8 中的 lambda 表达式。

I'd like to apply a lambda expression here doing a random generation of healthy and unhealthy horses.我想在这里应用一个 lambda 表达式来随机生成健康和不健康的马。 Then I'll print and run only the healthy horses.然后我将只打印和运行健康的马匹。 How can I do that?我怎样才能做到这一点?

import java.util.Scanner;
import java.util.Random;


public class HorseRace {
    static int numHorse = 0;
    static int healthyHorse = 0;

    public static void main(String[] args) {
        //int unhealthyHorse = 0;
        Random randomGenerator = new Random();
        Scanner input = new Scanner(System.in);
        int counter = 0;

        do {
            System.out.print("Enter number of horses: ");
            while (!input.hasNextInt()) {
                input.next();
            }
            numHorse = input.nextInt();
        } while (numHorse < 2);

        input.nextLine();

        Horse[] horseArray = new Horse[numHorse];

        while (counter < horseArray.length) {

            System.out.print("Name of horse " + (counter + 1) + ": ");
            String horseName = input.nextLine();
            String warCry = "*****************" + horseName + " says Yahoo! Finished!";

            int healthCondition = randomGenerator.nextInt(2);
            if (healthCondition == 1) {
                horseArray[counter] = new Horse(warCry);
                horseArray[counter].setName(horseName);
                System.out.println(horseArray[counter]);

                System.out.println(this);
                System.out.println(healthyHorse);
                //unhealthyHorse++;
            }
            counter++;
        }

        System.out.println(horseArray.length);
        System.out.println("...Barn to Gate...");

        for (int i = 0; i < healthyHorse; i++) {
            horseArray[i].start();

        }

    }

}

I have refactored some of the code and used Lambda expressions wherever possible. 我已经重构了一些代码,并尽可能使用了Lambda表达式。

public class HorseRace {

    public static void main(String[] args) {
        //int unhealthyHorse = 0;
        Random randomGenerator = new Random();
        Scanner input = new Scanner(System.in);
        int counter = 0;

        int numHorse;
        do {
            System.out.print("Enter number of horses: ");
            while (!input.hasNextInt()) {
                input.next();
            }
            numHorse = input.nextInt();
        } while (numHorse < 2);

        input.nextLine();

        List<Horse> horses = new ArrayList<>();

        while (counter < numHorse) {
            System.out.print("Name of horse " + (counter + 1) + ": ");
            String horseName = input.nextLine();
            String warCry = "*****************" + horseName + " says Yahoo! Finished!";
            int healthCondition = randomGenerator.nextInt(2);
            if (healthCondition == 1) {
                Horse horse = new Horse(warCry);
                horse.setName(horseName);
                horses.add(horse);
            }
            counter++;
        }

        horses.forEach(horse -> {
            System.out.println(horse);
            System.out.println(0);
        });

        System.out.println(horses.size());
        System.out.println("...Barn to Gate...");

        horses.forEach(Horse::start);
    }
}

Lambda expression is used as below: Lambda 表达式的使用如下:

在此处输入图像描述 在此处输入图像描述

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM