LINQ to Objects (Java)
LINQ to Objects — это использование LINQ-запросов с любым IEnumerable<T>
. Вы можете использовать LINQ для запроса любых перечислимых коллекций, таких как: примитивный массив, массив объектов, список, коллекция или итерируемый объект и так далее. Коллекция может быть определена пользователем или возвращена API JDK.
В общем смысле LINQ to Objects представляет собой новый подход к коллекциям. Раньше приходилось писать сложные циклы foreach
, которые определяли, как извлекать данные из коллекции. В подходе LINQ вы пишете декларативный код, который описывает то, что хотите получить.
Кроме того, LINQ-запросы имеют два основных преимущества перед традиционными циклами foreach
:
Также у LINQ-запросов есть некоторые преимущества перед Stream API:
foreach
, поэтому вы можете прервать цикл в любое время.ToCollection
, LeftJoin
и так далее.Как правило, чем сложнее операция, которую вы хотите выполнить над данными, тем больше пользы вы получите от использования LINQ вместо традиционных методов итерации.
— Реализованы все API LINQ to Objects. — Поддерживается больше API и Tuple. — Поддержка преобразования между IEnumerable и Stream. — Android поддерживается.
File | Settings | Build, Execution, Deployment | Debugger | Data Views | Java Type Renderers
.Add
.IterableView
в Renderer name
.java.lang.Iterable
в Apply renderer to objects of type (fully-qualified)
. Использование
Представление результата следует использовать с осторожностью из-за возможных побочных эффектов.
<dependency>
<groupId>com.bestvike</groupId>
<artifactId>linq</artifactId>
<version>6.0.0</version>
</dependency>
implementation 'com.bestvike:linq:6.0.0'
Использование Если вы используете Java 8 или Java 9, рекомендуется заменить сложный тип возвращаемого значения на lombok.var или lombok.val. Если вы используете Java 10 или более позднюю версию, рекомендуется заменить сложный тип возвращаемого значения на var.
Объединение непустых строк.
String result = Linq.of("!@#$%^", "C", "AAA", "", "Calling Twice", "SoS", Empty)
.where(x -> x != null && x.length() > 0)
.aggregate((x, y) -> x + ", " + y);
System.out.println(result);
----
!@#$%^, C, AAA, Calling Twice, SoS
Определение всех положительных чисел, которые чётные или нет.
boolean result = Linq.of(9999, 0, 888, -1, 66, -777, 1, 2, -12345)
.where(x -> x > 0)
.all(x -> x % 2 == 0);
System.out.println(result);
----
false
Определение любого положительного числа, которое чётное или нет.
boolean result = Linq.of(9999, 0, 888, -1, 66, -777, 1, 2, -12345)
.where(x -> x > 0)
.any(x -> x % 2 == 0);
System.out.println(result);
----
true
Добавление числа в конец и вставка двух чисел в заголовок.
String result = Linq.range(3, 2).append(5).prepend(2).prepend(1).format();
System.out.println(result);
----
[1, 2, 3, 4, 5]
Вычисление среднего значения последовательности целых чисел.
double result = Linq.of(5, -10, 15, 40, 28).averageInt();
System.out.println(result);
----
15.6
Конкатенация двух последовательностей целых чисел.
String result = Linq.of(1, 2).concat(Linq.of(3, 4)).format();
System.out.println(result);
----
[1, 2, 3, 4]
LINQ to Objects (Java) выпущен под Apache License 2.0.
Copyright 2017-2024 济南百思为科信息工程有限公司
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )