1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/timandy-linq

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 7.6 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 28.11.2024 11:01 425a72c

LINQ to Objects (Java)

LINQ to Objects — это использование LINQ-запросов с любым IEnumerable<T>. Вы можете использовать LINQ для запроса любых перечислимых коллекций, таких как: примитивный массив, массив объектов, список, коллекция или итерируемый объект и так далее. Коллекция может быть определена пользователем или возвращена API JDK.

В общем смысле LINQ to Objects представляет собой новый подход к коллекциям. Раньше приходилось писать сложные циклы foreach, которые определяли, как извлекать данные из коллекции. В подходе LINQ вы пишете декларативный код, который описывает то, что хотите получить.

Кроме того, LINQ-запросы имеют два основных преимущества перед традиционными циклами foreach:

  1. Они более лаконичны и читаемы, особенно при фильтрации нескольких условий.
  2. Они предоставляют мощные возможности фильтрации, упорядочивания и группировки с минимумом кода приложения.

Также у LINQ-запросов есть некоторые преимущества перед Stream API:

  1. Поддержка циклов foreach, поэтому вы можете прервать цикл в любое время.
  2. IEnumerable можно проходить повторно.
  3. LINQ очень прост в использовании, например, ToCollection, LeftJoin и так далее.
  4. LINQ быстрее, чем Stream API, в большинстве сложных случаев.

Как правило, чем сложнее операция, которую вы хотите выполнить над данными, тем больше пользы вы получите от использования LINQ вместо традиционных методов итерации.

Особенности

— Реализованы все API LINQ to Objects. — Поддерживается больше API и Tuple. — Поддержка преобразования между IEnumerable и Stream. — Android поддерживается.

Навигация

API Linq

  • empty;
  • singleton;
  • ofNullable;
  • of;
  • as;
  • chars;
  • words;
  • lines;
  • split;
  • infinite;
  • loop;
  • enumerate;
  • iterate;
  • range;
  • repeat.

API IEnumerable

  • forEach;
  • stream;
  • parallelStream;
  • aggregate;
  • all;
  • any;
  • append;
  • asEnumerable;
  • average;
  • cast;
  • chunk;
  • concat;
  • contains;
  • count;
  • crossJoin;
  • defaultIfEmpty;
  • distinct;
  • distinctBy;
  • elementAt;
  • elementAtOrDefault;
  • except;
  • exceptBy;
  • findIndex;
  • findLastIndex;
  • first;
  • firstOrDefault;
  • format;
  • fullJoin;
  • groupBy;
  • groupJoin;
  • indexOf;
  • intersect;
  • intersectBy;
  • join;
  • joining;
  • last;
  • lastIndexOf;
  • lastOrDefault;
  • leftJoin;
  • longCount;
  • max;
  • maxBy;
  • min;
  • minBy;
  • ofType;
  • orderBy;
  • orderByDescending;
  • prepend;
  • reverse;
  • rightJoin;
  • runOnce;
  • select;
  • selectMany;
  • sequenceEqual;
  • shuffle;
  • single;
  • singleOrDefault;
  • skip;
  • skipLast;
  • skipWhile;
  • sum;
  • take;
  • takeLast;
  • takeWhile;
  • toArray;
  • toCollection;
  • toEnumeration;
  • toLinkedList;
  • toLinkedMap;
  • toLinkedSet;
  • toList;
  • toLookup;
  • toMap;
  • toSet;
  • union;
  • unionBy;
  • where;
  • zip.

API IGrouping extends IEnumerable

  • getKey.

API ILookup extends IEnumerable

  • getCount;
  • get;
  • containsKey.

API IOrderedEnumerable extends IEnumerable

  • thenBy;
  • thenByDescending.

API Index

  • fromStart;
  • fromEnd;
  • getValue;
  • isFromEnd;
  • getOffset.

API Range

  • startAt;
  • endAt;
  • getStart;
  • getEnd;
  • getOffsetAndLength.

Классы Tuple

  • Tuple1;
  • Tuple2;
  • Tuple3;
  • Tuple4;
  • Tuple5;
  • Tuple6;
  • Tuple7;
  • TupleN.

Debug View (IntelliJ IDEA)

  1. Откройте диалоговое окно настроек File | Settings | Build, Execution, Deployment | Debugger | Data Views | Java Type Renderers.
  2. Нажмите кнопку Add.
  3. Введите IterableView в Renderer name.
  4. Введите java.lang.Iterable в Apply renderer to objects of type (fully-qualified). Использование

Представление результата следует использовать с осторожностью из-за возможных побочных эффектов.

Maven

<dependency>
    <groupId>com.bestvike</groupId>
    <artifactId>linq</artifactId>
    <version>6.0.0</version>
</dependency>

Gradle

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 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/timandy-linq.git
git@api.gitlife.ru:oschina-mirror/timandy-linq.git
oschina-mirror
timandy-linq
timandy-linq
master