Consistent nullability for array/collection input parameters
Includes pre-sizing of LinkedHashSet for conversion from array. Issue: SPR-17123 Issue: SPR-17074
This commit is contained in:
parent
a9a38fe67e
commit
69c6a40c50
|
|
@ -983,12 +983,12 @@ public abstract class StringUtils {
|
||||||
/**
|
/**
|
||||||
* Trim the elements of the given {@code String} array,
|
* Trim the elements of the given {@code String} array,
|
||||||
* calling {@code String.trim()} on each of them.
|
* calling {@code String.trim()} on each of them.
|
||||||
* @param array the original {@code String} array
|
* @param array the original {@code String} array (potentially {@code null} or empty)
|
||||||
* @return the resulting array (of the same size) with trimmed elements
|
* @return the resulting array (of the same size) with trimmed elements
|
||||||
*/
|
*/
|
||||||
public static String[] trimArrayElements(@Nullable String[] array) {
|
public static String[] trimArrayElements(String[] array) {
|
||||||
if (ObjectUtils.isEmpty(array)) {
|
if (ObjectUtils.isEmpty(array)) {
|
||||||
return new String[0];
|
return array;
|
||||||
}
|
}
|
||||||
|
|
||||||
String[] result = new String[array.length];
|
String[] result = new String[array.length];
|
||||||
|
|
@ -1002,7 +1002,7 @@ public abstract class StringUtils {
|
||||||
/**
|
/**
|
||||||
* Remove duplicate strings from the given array.
|
* Remove duplicate strings from the given array.
|
||||||
* <p>As of 4.2, it preserves the original order, as it uses a {@link LinkedHashSet}.
|
* <p>As of 4.2, it preserves the original order, as it uses a {@link LinkedHashSet}.
|
||||||
* @param array the {@code String} array
|
* @param array the {@code String} array (potentially empty)
|
||||||
* @return an array without duplicates, in natural sort order
|
* @return an array without duplicates, in natural sort order
|
||||||
*/
|
*/
|
||||||
public static String[] removeDuplicateStrings(String[] array) {
|
public static String[] removeDuplicateStrings(String[] array) {
|
||||||
|
|
@ -1010,18 +1010,15 @@ public abstract class StringUtils {
|
||||||
return array;
|
return array;
|
||||||
}
|
}
|
||||||
|
|
||||||
Set<String> set = new LinkedHashSet<>();
|
Set<String> set = new LinkedHashSet<>(Arrays.asList(array));
|
||||||
for (String element : array) {
|
|
||||||
set.add(element);
|
|
||||||
}
|
|
||||||
return toStringArray(set);
|
return toStringArray(set);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Split a {@code String} at the first occurrence of the delimiter.
|
* Split a {@code String} at the first occurrence of the delimiter.
|
||||||
* Does not include the delimiter in the result.
|
* Does not include the delimiter in the result.
|
||||||
* @param toSplit the string to split
|
* @param toSplit the string to split (potentially {@code null} or empty)
|
||||||
* @param delimiter to split the string up with
|
* @param delimiter to split the string up with (potentially {@code null} or empty)
|
||||||
* @return a two element array with index 0 being before the delimiter, and
|
* @return a two element array with index 0 being before the delimiter, and
|
||||||
* index 1 being after the delimiter (neither element includes the delimiter);
|
* index 1 being after the delimiter (neither element includes the delimiter);
|
||||||
* or {@code null} if the delimiter wasn't found in the given input {@code String}
|
* or {@code null} if the delimiter wasn't found in the given input {@code String}
|
||||||
|
|
@ -1100,7 +1097,7 @@ public abstract class StringUtils {
|
||||||
* delimiter characters. Each of those characters can be used to separate
|
* delimiter characters. Each of those characters can be used to separate
|
||||||
* tokens. A delimiter is always a single character; for multi-character
|
* tokens. A delimiter is always a single character; for multi-character
|
||||||
* delimiters, consider using {@link #delimitedListToStringArray}.
|
* delimiters, consider using {@link #delimitedListToStringArray}.
|
||||||
* @param str the {@code String} to tokenize
|
* @param str the {@code String} to tokenize (potentially {@code null} or empty)
|
||||||
* @param delimiters the delimiter characters, assembled as a {@code String}
|
* @param delimiters the delimiter characters, assembled as a {@code String}
|
||||||
* (each of the characters is individually considered as a delimiter)
|
* (each of the characters is individually considered as a delimiter)
|
||||||
* @return an array of the tokens
|
* @return an array of the tokens
|
||||||
|
|
@ -1119,7 +1116,7 @@ public abstract class StringUtils {
|
||||||
* delimiter characters. Each of those characters can be used to separate
|
* delimiter characters. Each of those characters can be used to separate
|
||||||
* tokens. A delimiter is always a single character; for multi-character
|
* tokens. A delimiter is always a single character; for multi-character
|
||||||
* delimiters, consider using {@link #delimitedListToStringArray}.
|
* delimiters, consider using {@link #delimitedListToStringArray}.
|
||||||
* @param str the {@code String} to tokenize
|
* @param str the {@code String} to tokenize (potentially {@code null} or empty)
|
||||||
* @param delimiters the delimiter characters, assembled as a {@code String}
|
* @param delimiters the delimiter characters, assembled as a {@code String}
|
||||||
* (each of the characters is individually considered as a delimiter)
|
* (each of the characters is individually considered as a delimiter)
|
||||||
* @param trimTokens trim the tokens via {@link String#trim()}
|
* @param trimTokens trim the tokens via {@link String#trim()}
|
||||||
|
|
@ -1159,7 +1156,7 @@ public abstract class StringUtils {
|
||||||
* but it will still be considered as a single delimiter string, rather
|
* but it will still be considered as a single delimiter string, rather
|
||||||
* than as bunch of potential delimiter characters, in contrast to
|
* than as bunch of potential delimiter characters, in contrast to
|
||||||
* {@link #tokenizeToStringArray}.
|
* {@link #tokenizeToStringArray}.
|
||||||
* @param str the input {@code String}
|
* @param str the input {@code String} (potentially {@code null} or empty)
|
||||||
* @param delimiter the delimiter between elements (this is a single delimiter,
|
* @param delimiter the delimiter between elements (this is a single delimiter,
|
||||||
* rather than a bunch individual delimiter characters)
|
* rather than a bunch individual delimiter characters)
|
||||||
* @return an array of the tokens in the list
|
* @return an array of the tokens in the list
|
||||||
|
|
@ -1176,7 +1173,7 @@ public abstract class StringUtils {
|
||||||
* but it will still be considered as a single delimiter string, rather
|
* but it will still be considered as a single delimiter string, rather
|
||||||
* than as bunch of potential delimiter characters, in contrast to
|
* than as bunch of potential delimiter characters, in contrast to
|
||||||
* {@link #tokenizeToStringArray}.
|
* {@link #tokenizeToStringArray}.
|
||||||
* @param str the input {@code String}
|
* @param str the input {@code String} (potentially {@code null} or empty)
|
||||||
* @param delimiter the delimiter between elements (this is a single delimiter,
|
* @param delimiter the delimiter between elements (this is a single delimiter,
|
||||||
* rather than a bunch individual delimiter characters)
|
* rather than a bunch individual delimiter characters)
|
||||||
* @param charsToDelete a set of characters to delete; useful for deleting unwanted
|
* @param charsToDelete a set of characters to delete; useful for deleting unwanted
|
||||||
|
|
@ -1218,7 +1215,7 @@ public abstract class StringUtils {
|
||||||
/**
|
/**
|
||||||
* Convert a comma delimited list (e.g., a row from a CSV file) into an
|
* Convert a comma delimited list (e.g., a row from a CSV file) into an
|
||||||
* array of strings.
|
* array of strings.
|
||||||
* @param str the input {@code String}
|
* @param str the input {@code String} (potentially {@code null} or empty)
|
||||||
* @return an array of strings, or the empty array in case of empty input
|
* @return an array of strings, or the empty array in case of empty input
|
||||||
*/
|
*/
|
||||||
public static String[] commaDelimitedListToStringArray(@Nullable String str) {
|
public static String[] commaDelimitedListToStringArray(@Nullable String str) {
|
||||||
|
|
@ -1229,23 +1226,19 @@ public abstract class StringUtils {
|
||||||
* Convert a comma delimited list (e.g., a row from a CSV file) into a set.
|
* Convert a comma delimited list (e.g., a row from a CSV file) into a set.
|
||||||
* <p>Note that this will suppress duplicates, and as of 4.2, the elements in
|
* <p>Note that this will suppress duplicates, and as of 4.2, the elements in
|
||||||
* the returned set will preserve the original order in a {@link LinkedHashSet}.
|
* the returned set will preserve the original order in a {@link LinkedHashSet}.
|
||||||
* @param str the input {@code String}
|
* @param str the input {@code String} (potentially {@code null} or empty)
|
||||||
* @return a set of {@code String} entries in the list
|
* @return a set of {@code String} entries in the list
|
||||||
* @see #removeDuplicateStrings(String[])
|
* @see #removeDuplicateStrings(String[])
|
||||||
*/
|
*/
|
||||||
public static Set<String> commaDelimitedListToSet(@Nullable String str) {
|
public static Set<String> commaDelimitedListToSet(@Nullable String str) {
|
||||||
Set<String> set = new LinkedHashSet<>();
|
|
||||||
String[] tokens = commaDelimitedListToStringArray(str);
|
String[] tokens = commaDelimitedListToStringArray(str);
|
||||||
for (String token : tokens) {
|
return new LinkedHashSet<>(Arrays.asList(tokens));
|
||||||
set.add(token);
|
|
||||||
}
|
|
||||||
return set;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Convert a {@link Collection} to a delimited {@code String} (e.g. CSV).
|
* Convert a {@link Collection} to a delimited {@code String} (e.g. CSV).
|
||||||
* <p>Useful for {@code toString()} implementations.
|
* <p>Useful for {@code toString()} implementations.
|
||||||
* @param coll the {@code Collection} to convert
|
* @param coll the {@code Collection} to convert (potentially {@code null} or empty)
|
||||||
* @param delim the delimiter to use (typically a ",")
|
* @param delim the delimiter to use (typically a ",")
|
||||||
* @param prefix the {@code String} to start each element with
|
* @param prefix the {@code String} to start each element with
|
||||||
* @param suffix the {@code String} to end each element with
|
* @param suffix the {@code String} to end each element with
|
||||||
|
|
@ -1272,7 +1265,7 @@ public abstract class StringUtils {
|
||||||
/**
|
/**
|
||||||
* Convert a {@code Collection} into a delimited {@code String} (e.g. CSV).
|
* Convert a {@code Collection} into a delimited {@code String} (e.g. CSV).
|
||||||
* <p>Useful for {@code toString()} implementations.
|
* <p>Useful for {@code toString()} implementations.
|
||||||
* @param coll the {@code Collection} to convert
|
* @param coll the {@code Collection} to convert (potentially {@code null} or empty)
|
||||||
* @param delim the delimiter to use (typically a ",")
|
* @param delim the delimiter to use (typically a ",")
|
||||||
* @return the delimited {@code String}
|
* @return the delimited {@code String}
|
||||||
*/
|
*/
|
||||||
|
|
@ -1283,17 +1276,17 @@ public abstract class StringUtils {
|
||||||
/**
|
/**
|
||||||
* Convert a {@code Collection} into a delimited {@code String} (e.g., CSV).
|
* Convert a {@code Collection} into a delimited {@code String} (e.g., CSV).
|
||||||
* <p>Useful for {@code toString()} implementations.
|
* <p>Useful for {@code toString()} implementations.
|
||||||
* @param coll the {@code Collection} to convert
|
* @param coll the {@code Collection} to convert (potentially {@code null} or empty)
|
||||||
* @return the delimited {@code String}
|
* @return the delimited {@code String}
|
||||||
*/
|
*/
|
||||||
public static String collectionToCommaDelimitedString(Collection<?> coll) {
|
public static String collectionToCommaDelimitedString(@Nullable Collection<?> coll) {
|
||||||
return collectionToDelimitedString(coll, ",");
|
return collectionToDelimitedString(coll, ",");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Convert a {@code String} array into a delimited {@code String} (e.g. CSV).
|
* Convert a {@code String} array into a delimited {@code String} (e.g. CSV).
|
||||||
* <p>Useful for {@code toString()} implementations.
|
* <p>Useful for {@code toString()} implementations.
|
||||||
* @param arr the array to display
|
* @param arr the array to display (potentially {@code null} or empty)
|
||||||
* @param delim the delimiter to use (typically a ",")
|
* @param delim the delimiter to use (typically a ",")
|
||||||
* @return the delimited {@code String}
|
* @return the delimited {@code String}
|
||||||
*/
|
*/
|
||||||
|
|
@ -1319,7 +1312,7 @@ public abstract class StringUtils {
|
||||||
* Convert a {@code String} array into a comma delimited {@code String}
|
* Convert a {@code String} array into a comma delimited {@code String}
|
||||||
* (i.e., CSV).
|
* (i.e., CSV).
|
||||||
* <p>Useful for {@code toString()} implementations.
|
* <p>Useful for {@code toString()} implementations.
|
||||||
* @param arr the array to display
|
* @param arr the array to display (potentially {@code null} or empty)
|
||||||
* @return the delimited {@code String}
|
* @return the delimited {@code String}
|
||||||
*/
|
*/
|
||||||
public static String arrayToCommaDelimitedString(@Nullable Object[] arr) {
|
public static String arrayToCommaDelimitedString(@Nullable Object[] arr) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue