Мой Java-приложение падает из-за этого метода [дубликата]

Лямбда - это тип функции, определенный в строке. Наряду с лямбдой вы также обычно имеете какой-то тип переменной, который может содержать ссылку на функцию, лямбда или иначе.

Например, вот кусок кода C #, который не использует лямбда:

public Int32 Add(Int32 a, Int32 b)
{
    return a + b;
}

public Int32 Sub(Int32 a, Int32 b)
{
    return a - b;
}

public delegate Int32 Op(Int32 a, Int32 b);

public void Calculator(Int32 a, Int32 b, Op op)
{
    Console.WriteLine("Calculator: op(" + a + ", " + b + ") = " + op(a, b));
}

public void Test()
{
    Calculator(10, 23, Add);
    Calculator(10, 23, Sub);
}

Это вызывает калькулятор, передавая не только два числа, но и какой метод вызывать внутри калькулятора для получения результатов вычисления.

В C # 2.0 мы получили анонимные методы , который сокращает код выше:

public delegate Int32 Op(Int32 a, Int32 b);

public void Calculator(Int32 a, Int32 b, Op op)
{
    Console.WriteLine("Calculator: op(" + a + ", " + b + ") = " + op(a, b));
}

public void Test()
{
    Calculator(10, 23, delegate(Int32 a, Int32 b)
    {
        return a + b;
    });
    Calculator(10, 23, delegate(Int32 a, Int32 b)
    {
        return a - b;
    });
}

И затем в C # 3.0 мы получили lambdas, который делает код еще короче:

public delegate Int32 Op(Int32 a, Int32 b);

public void Calculator(Int32 a, Int32 b, Op op)
{
    Console.WriteLine("Calculator: op(" + a + ", " + b + ") = " + op(a, b));
}

public void Test()
{
    Calculator(10, 23, (a, b) => a + b);
    Calculator(10, 23, (a, b) => a - b);
}
-1
задан Ole V.V. 16 January 2019 в 16:53
поделиться

2 ответа

Ваш код будет зависать, если:

  • myArrayList содержит элемент null (NullPointerException)
  • myArrayList содержит пустую строку (IndexOutOfBoundsException)
  • Любой элемент myArrayList не начинается с «B» (ConcurrentModificationException)

. Последнее и наиболее вероятное: см. вопрос , связанный с @Todd в комментариях.

Кроме того, в Java вы должны сравнивать строки, используя .equals вместо == или !=.

0
ответ дан RobCo 16 January 2019 в 16:53
поделиться

Во-первых, для сравнения строк используйте String.equals(), а не ==. Во-вторых, если вы хотите удалить объекты из списка:

  • выполните обратный просмотр
  • или создайте промежуточный массив, содержащий объекты для удаления
0
ответ дан Bruno 16 January 2019 в 16:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: