Libraries - DmitryGontarenko/usefultricks GitHub Wiki

Apache Common

Apache StringUtils

Данная библиотека помогает в работе над строками.
Все ее методы имеют проверку на null.

StringUtils Dependencies

Maven

        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.8</version>
        </dependency>

Checking for Empty and Blank

С помощью методов isEmpty и isNotEmpty, а также методов, которые принимают последовательность строк - isAllEmpty, isAnyEmpty и isNoneEmpty, можно проверить строку на null. Данные методы вернут true, если переданная строка равна null или не содержит символов.

StringUtils.isEmpty("") // true

StringUtils.isAllEmpty(null, "") // true
StringUtils.isAnyEmpty("hello", "") // true

StringUtils.isNotEmpty("hello") // true
StringUtils.isNoneEmpty("hello", "country") // true

Методы isBlank и isNotBlank проверяют, содержит ли переданная строка пустое значение:

StringUtils.isBlank("  ") // true
StringUtils.isNotBlank("hello") // true

Equals

Методы equals и equalsAny сранивают одну строку с другой (или с набором строк):

StringUtils.equals("Cosmos", "Cosmos") // true
StringUtils.equalsAny("Cosmos", "Cosmos", "Space") // true

StringUtils.equalsIgnoreCase("Cosmos", "COSMOS") // true
StringUtils.equalsAnyIgnoreCase("Cosmos", "COSMOS", "SPACE") // true

Contains

Методы contains, containsAny и containsNone проверяют, содержит ли строка какой-либо символ или подстроку из переданного набора:

String cosmos = "cosmos.com";

StringUtils.contains(cosmos, "c") // true
StringUtils.containsAny(cosmos, "c", "s", "h") // true
StringUtils.containsNone(cosmos, "h") // true

StringUtils.containsIgnoreCase(cosmos, "COSMOS")  // true

Case Changing

С помощью методов upperCase, lowerCase, swapCase, capitalize и uncapitalize можно менять регистр переданной строки:

StringUtils.upperCase("cosmos")  // COSMOS
StringUtils.lowerCase("COSMOS")  // cosmos
StringUtils.swapCase("cosmos.COM") // COSMOS.com
StringUtils.capitalize("cosmos") // Cosmos
StringUtils.uncapitalize("Cosmos") // cosmos

Checking case

С помощью методов isAllLowerCase, isAllUpperCase и isMixedCase можно проверить регистр переданной строки:

StringUtils.isAllLowerCase("city") // true
StringUtils.isAllUpperCase("CITY") // true
StringUtils.isMixedCase("City") // true

Appending and Prepending

Метод appendIfMissing добавляет суффикс, если строка не заканчивается одним из переданных суффиксов.
Аналогично, метод prependIfMissing доавляет префикс к началу заданной строки.

StringUtils.appendIfMissing("cosmos.com", ".com")  // cosmos.com
StringUtils.prependIfMissing("cosmos.com", "www.") // www.cosmos.com

StringUtils.appendIfMissingIgnoreCase("cosmos.COM", ".com") // cosmos.COM
StringUtils.prependIfMissingIgnoreCase(WWW.cosmos, "www.") //  WWW.cosmos.com

Reverse

Метод reverse определяет обратный порядок символов в строке:

 StringUtils.reverse("dell") // lled

Метод reverseDelimited меняет порядок групп строк по указанному разделителю:

StringUtils.reverseDelimited("www.dell.com", '.') //  com.dell.www

Count Matches

Метод countMatches подсчитывает, сколько раз символ или подстрока встречаются в переданной строке:

StringUtils.countMatches("cosmos.com", "os") // 2

Rotate

Метод rotate сдвигает символы переданной строки на указанную позицию вправо:

StringUtils.rotate("abc", 1) // // cab

Difference

Метод difference сравнивает две строки и возвращает остаток второй строки, начиная с позиции, где она отличается от первой:

StringUtils.difference("This color is white", "This color is orange")  // orange

Stripping and Trimming

Метод trim удаляет из начала и конца строки лишнии пробелы и управляющии символы.
Данный метод делегирует функцию trim() в String и добавляет обработку на null.

StringUtils.trim("\n Cosmos ") // Cosmos

Метод strip удаляет указанный символ из начала и конца строки:

 StringUtils.strip("+++Cosmos+++", "+") // Cosmos

startsWith, endsWith

С помощью методов startsWith, endsWith и startsWithAny, endsWithAny можно проверить наличие префикса или суффикса в строке:

StringUtils.startsWith("cosmos.com", "cosmo") // true
StringUtils.endsWith("cosmos.com", ".com") // true

StringUtils.startsWithAny("cosmos.com", "cosmo", "mars") // true
StringUtils.endsWithAny("cosmos.com", ".com", ".ru") // true

indexOf

Метод indexOf возвращает индекс первого результата для указанной подстроки или -1, если она не встречается в строке.
Метод lastIndexOf работает аналогично, только возвращает индекс для последнего найденного результата.

StringUtils.indexOf("cosmos.com", "c") // 0
StringUtils.lastIndexOf("cosmos.com", "c") // 7

substring

Метод substring возвращает подстроку из указанной строки. Для этого указывается индекс начала (и конца) строки:

StringUtils.substring("cosmos.com", 3) // mos.com
StringUtils.substring("cosmos.com", 3, 6) // mos

С помощью методов substringBefore и substringAfter можно получить подстроку до или после указанного разделителя (вернется первый результат):

StringUtils.substringBefore("www.cosmos.com", ".") // www
StringUtils.substringAfter("www.cosmos.com", ".") // cosmos.com

С помощью методов substringBeforeLast и substringAfterLast можно получить подстроку до или после указанного разделителя (вернется последний результат):

StringUtils.substringBeforeLast("www.cosmos.com", ".") // www.cosmos
StringUtils.substringAfterLast("www.cosmos.com", ".") // com

left, right, mid

Метод left возвращает крайние левые символы строки в указанном количестве:

StringUtils.left("cosmos.com", 3) // cos

Метод right возвращает крайние правые символы строки в указанном количестве:

StringUtils.right("cosmos.com", 3) // com

С помощью mid можно получить подстроку из любого места строки. Для этого необходимо указать индекс первого символа и количество возвращаемых символов:

StringUtils.mid("cosmos.com", 3, 7) // mos.com

split, join

Метод split разделяет строку с помощью указанного разделителя и помещает в массив строк:

String[] splitArray = StringUtils.split("www.cosmos.com", "."); // [www, cosmos, com]

Метод join объединяет элементы массива через указанный разделитель в строку:

String joinString = StringUtils.join(splitArray, "."); // www.cosmos.com

remove

Метод remove удаляет из строки все указанные подстроки.
Метод removeStart удаляет подстроку, только если она находится в начале строки (не путать с первым результатом).
Метод removeEnd удаляет подстроку, только если она находится в конце строки.

StringUtils.remove("/cosmos.com/", "/") // cosmos.com
StringUtils.removeStart("/cosmos.com/", "/") // cosmos.com/
StringUtils.removeEnd("/cosmos.com/", "/") // /cosmos.com

replace

Метод replace находит и заменяет указанную подстроку в исходной строке:

StringUtils.replace("cosmos.com", "com", "ru") // cosmos.ru

leftPad, rightPad, center

С помощью методов leftPad, rightPad и center можно задавать отступы влево, вправо или по центру строки:

StringUtils.leftPad("cosmos.com", 12) // "  cosmos.com"
StringUtils.rightPad("cosmos.com", 12) // "cosmos.com  "
StringUtils.center("cosmos.com", 12) // " cosmos.com "

repeat

С помощью метода repeat можно продублировать строку указанное количество раз:

StringUtils.repeat("cosmos.com", 3) // cosmos.comcosmos.comcosmos.com
StringUtils.repeat("cosmos.com", ", ",3) // cosmos.com, cosmos.com, cosmos.com

defaultString

Метод defaultString вернет либо переданную строку, либо пустое значение "", если переданная строка будет содержать null:

String text = null;
StringUtils.defaultString(text); // ""

Apache CollectionUtils

Apache CollectionUtils представляет собой набор служебных методов для общих операций, которые охватывают широкий спектр вариантов использования и помогают избежать написания стандартного кода.

CollectionUtils Dependencies

Maven

    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-collections4</artifactId>
      <version>4.1</version>
    </dependency>

isEmpty

С помощью методов CollectionUtils.isEmpty() и CollectionUtils.isNotEmpty() можно проверять коллекцию на null:

        CollectionUtils.isEmpty(Arrays.asList()); // true
        CollectionUtils.isNotEmpty(Arrays.asList("Hello")); // true

isEqual

Метод CollectionUtils.isEqualCollection() сравнивает две коллекции по размеру, а затем по содержимому:

        List<String> stringListOne = Arrays.asList("Mazda", "BMW");
        List<String> stringListTwo = Arrays.asList("BMW", "Mazda");

        CollectionUtils.isEqualCollection(stringListOne, stringListTwo); // true

Adding Only Non-Null Elements

Метод CollectionUtils.addIgnoreNull() добавляет в коллекцию только ненулевые значения. Первый аргумент - сама коллекция, второй - объект для вставки:

        List<String> stringList = new ArrayList<>();
        CollectionUtils.addIgnoreNull(stringList, "hello");
        CollectionUtils.addIgnoreNull(stringList, null);
        System.out.println(stringList); // [hello]

Collating Lists

Метод CollectionUtils.collate() объединяет две коллекции (без сортировки).
С помощью дополнительного аргумента можно исключить наличие дубликатов.

        List<String> stringListOne = Arrays.asList("A", "B", "B");
        List<String> stringListTwo = Arrays.asList("D", "C");

        CollectionUtils.collate(stringListOne, stringListTwo); // [A, B, B, D, C]
        CollectionUtils.collate(stringListOne, stringListTwo, false); // [A, B, D, C]

Checking Inclusion

Метод CollectionUtils.isSubCollection() проверяет, является ли содержимое первой коллекции - частью содержимого второй коллекции:

        List<Integer> intListOne = Arrays.asList(2, 1);
        List<Integer> intListTwo = Arrays.asList(1, 2, 3, 4, 5);

        CollectionUtils.isSubCollection(intListOne, intListTwo); // true

Intersection of Collections

Метод CollectionUtils.intersection() объединяет две коллекции и содержит только те значения, которые встречаются в обоих коллекциях:

        List<Integer> intListOne = Arrays.asList(2, 1);
        List<Integer> intListTwo = Arrays.asList(1, 2, 3, 4, 5);

        CollectionUtils.intersection(intListOne, intListTwo); // [1, 2]

Subtracting Collections

Метод CollectionUtils.subtract объединяет две коллекции и содержит только те значения, которые есть в первой коллекции, но нет во второй:

        List<Integer> intListOne = Arrays.asList(1, 2, 3, 4, 5);
        List<Integer> intListTwo = Arrays.asList(1, 2, 3);

        CollectionUtils.subtract(intListOne , intListTwo); // [4, 5]

Union of Collections

Метод CollectionUtils.union() объединяет две коллекции, но будет при этом содержать только уникальные значения:

        List<Integer> intListOne = Arrays.asList(1, 2, 3, 4, 5);
        List<Integer> intListTwo = Arrays.asList(1, 2, 3);

        CollectionUtils.union(intListOne , intListTwo) // [1, 2, 3, 4, 5]

Apache BooleanUtils

Данная библиотека предоставляет собой служебные методы для работы с логическими примитивами и логическими объектами.

BooleanUtils Dependencies

Maven

        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.10</version>
        </dependency>

isTrue, isFalse

Методы isTrue, isFalse и isNotTrue,isNotFalse проверяют переданное логическое значение на true/false, при передачи null всегда будут возвращать false:

BooleanUtils.isTrue(true) // true
BooleanUtils.isFalse(false) // true

BooleanUtils.isNotTrue(false) // true
BooleanUtils.isNotFalse(true) // true

negate

Метод negate вернет противоположное переданному логическое значение:

BooleanUtils.negate(false) // true

Convert toString

Методы toStringOnOff, toStringTrueFalse и toStringYesNo конвертируют переданное логическое значение и возвращают его в соответствующем формате:

BooleanUtils.toStringOnOff(true); // on
BooleanUtils.toStringTrueFalse(true); // true
BooleanUtils.toStringYesNo(true); // yes

Apache ArrayUtils

Данная библиотека предоставляет служебные методы для работы с массивами.

ArrayUtils Dependencies

Maven

        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.10</version>
        </dependency>

add

С помощью методов add и addAll можно добавить новый элемент в конец массива. Метод копирует переданный массив и возвращает новый, с переданными элементами:

int[] oldArray = {1, 2, 3};

int[] newArrayOne = ArrayUtils.add(oldArray, 4); // 1, 2, 3, 4
int[] newArrayTwo = ArrayUtils.addAll(oldArray, 4, 5, 6); // // 1, 2, 3, 4, 5, 6

Метод addFirst копирует указанный массив и добавляет элемент в начало нового массива:

int[] oldArray = {1, 2, 3};

int[] newArray = ArrayUtils.addFirst(oldArray, 0); // 0, 1, 2, 3

insert

Метод insert копирует указанный массив и вставляет элементы в новый массив по заданному индексу (начиная с нуля):

int[] oldArray = {1, 2, 3};

int[] newArray = ArrayUtils.insert(0, oldArray, 1); // 1, 1, 2, 3

remove

Методы remove и removeAll удаляют элементы из переданного массива по индексу. Метод копирует переданный массив и возвращает новый, где будут удалены указанные элементы:

int[] oldArray = {1, 2, 3};

int[] newArrayOne = ArrayUtils.remove(oldArray, 2); // 1, 2
int[] newArrayTwo = ArrayUtils.removeAll(oldArray, 1, 2); // 1

removeElement

Методы removeElement и removeElements удаляют переданное значение из заданного массива, но будет удален только первый результат поиска. Если элемент в массиве не найден, операция удаления игнарируется и создания исключения не происходит.
Метод копирует переданный массив и возвращает новый, где будет удалено указанное значение:

int[] oldArray = {1, 2, 3};

int[] newArrayOne = ArrayUtils.removeElement(oldArray, 3); // 1, 2
int[] newArrayTwo = ArrayUtils.removeElements(oldArray, 1, 2); // 3

Метод removeAllOccurences удаляет переданное значение из заданного массива, но будут удалены все результаты поиска:

int[] oldArray = {1, 2, 3, 3};

int[] newArray = ArrayUtils.removeAllOccurences(oldArray, 3); // 1, 2

contains

Метод contains проверяет, существует ли значение в переданном массиве:

int[] oldArray = {1, 2, 3, 3};

ArrayUtils.contains(oldArray, 3) // true

subarray

Метод subarray возвращает новый массив, который будет содержать только элементы в пределах указанного диапазона:

int[] oldArray = {1, 2, 3, 4, 5};

ArrayUtils.subarray(oldArray, 3, 5) // 2, 3

shift

Метод shift сдвигает элементы массива по заданному значению, этот метод вносит изменения в указанный массив:

int[] oldArray = {1, 2, 3};

ArrayUtils.shift(oldArray, 1); // 3, 1, 2

reverse

Метод reverse задает обратный порядок элементов в массиве (можно указать диапазон), этот метод вносит изменения в указанный массив:

int[] oldArray = {1, 2, 3};

ArrayUtils.reverse(oldArray); // 3, 2, 1

clone

Метод clone клонирует указанный массив:

int[] oldArray = {1, 2, 3};

int[] cloneArray = ArrayUtils.clone(oldArray); // 1, 2, 3

Check Array Empty

Методы isEmpty и isNotEmpty проверяют переданный массив на пустоту или null:

int[] oldArray = {};

ArrayUtils.isEmpty(oldArray) // true
ArrayUtils.isNotEmpty(oldArray) // false

isSameLength

Метод isSameLength сравнивает два массива по длинне:

int[] arrayFirst = {1, 2, 3};
int[] arraySecond = {1, 2, 3};
ArrayUtils.isSameLength(arrayFirst, arraySecond); // true

Sources

StringUtils документация
ArrayUtils документация

⚠️ **GitHub.com Fallback** ⚠️