функция. Функция как параметр в методе печати - PullRequest
0 голосов
/ 13 мая 2019

Понятия не имею, как подойти к проблеме, с которой я сталкиваюсь. Мы должны распечатать массив, используя function.Function в качестве параметра и используя lambas для вывода 1. четных и 2. нечетных чисел.

final class Main
{
    private Main() {}

    public static void main(String[] argv)
    {
        // Fill the array with integer values and print out only
        // values of even indices
        DataStructure ds = new DataStructure();
        ds.printEven();


        // Even
        ds.print(..);
     }
     // Odd
        ds.print(...);

}

// конец основного класса

import java.util.Arrays;
import java.util.function.Function;

class DataStructure
{
    // Create an array
    private final static int SIZE = 15;
    private int[] arrayOfInts = new int[SIZE];

    int getSize()
    {
        return SIZE;
    }

    int[] getInts()
    {
        return arrayOfInts;
    }

    DataStructure()
    {
        // fill the array with ascending integer values
        for (int i = 0; i < SIZE; i++)
        {
            arrayOfInts[i] = i;
        }
    }

    private DataStructureIterator getIterator(IteratorStrategy strategy)
    {
        return strategy.getIterator(this);
    }

    void print(IteratorStrategy strategy)
    {
        DataStructureIterator iterator = getIterator(strategy);
        while (iterator.hasNext())
        {
            System.out.print(iterator.next() + " ");
        }
    }


    void printEven()
    {
        // Print out values of even indices of the array
        DataStructureIterator iterator = 
                                       getIterator(newEvenIteratorStrategy());
        while (iterator.hasNext())
        {
            System.out.print(iterator.next() + " ");
        }
        System.out.println();
    }


    //this method is still missing - we have to use the given parameters

    void print(java.util.function.Function <Integer,Boolean> iterator)
    {

    }

}

Ожидаемый результат для isEven 0 2 4 6 8 10 12 14 а для isOdd 1 3 5 7 9 11 13

Остальная часть данного класса не должна быть важной, по крайней мере, я так думаю. Я ищу решения или просто подсказку для часов, но я не нахожу ничего полезного. Ваша помощь очень ценится и извините за мой английский Если тебе что-нибудь понадобится, дай мне знать. Кстати, я новичок в stackoverflow, поэтому я надеюсь, что все сделал правильно

1 Ответ

0 голосов
/ 13 мая 2019

Не уверен, что я понял, что вы действительно хотели, но, возможно, вам стоит взглянуть по этой ссылке: https://www.boraji.com/java-8-javautilfunctionfunction-example.

В ней объясняется, как использовать интерфейс функций, и приводится пример с четным числом и числом шансов...

В вашем случае Function<Integer, boolean> означает, что вы собираетесь получить целое число в качестве входных данных и что вы должны вернуть логическое значение (я полагаю, true, если четное и false, если нечетное).

Надеюсь, поможет!;)

...