public class ERXArrayUtilities
extends java.lang.Object
NSArray utilities.| Modifier and Type | Class and Description |
|---|---|
static class |
ERXArrayUtilities.AvgNonNullOperator
Define an
NSArray.Operator
for the key avgNonNull. |
static class |
ERXArrayUtilities.FetchSpecOperator
Define an
NSArray.Operator
for the key fetchSpec. |
static class |
ERXArrayUtilities.FlattenOperator
Define an
NSArray.Operator
for the key flatten. |
static class |
ERXArrayUtilities.IsEmptyOperator
Define an
NSArray.Operator
for the key isEmpty. |
static class |
ERXArrayUtilities.LimitOperator
Define an
NSArray.Operator
for the key limit, which is similar to subarrayWithRange except it is
always from 0 to the limit value. |
static class |
ERXArrayUtilities.MedianOperator
Define an
NSArray.Operator
for the key median. |
static class |
ERXArrayUtilities.ObjectAtIndexOperator
Define an
NSArray.Operator for the key objectAtIndex. |
static class |
ERXArrayUtilities.RemoveNullValuesOperator
Define an
NSArray.Operator
for the key removeNullValues. |
static class |
ERXArrayUtilities.ReverseOperator
Define an
NSArray.Operator
for the key reverse. |
static class |
ERXArrayUtilities.SortOperator
Define an
NSArray.Operator
for the key sort. |
static class |
ERXArrayUtilities.StandardDeviationOperator
Define an
NSArray.Operator
for the key stdDev and popStdDev. |
static class |
ERXArrayUtilities.SubarrayWithRangeOperator
Define an
NSArray.Operator
for the key subarrayWithRange. |
static class |
ERXArrayUtilities.UniqueOperator
Define an
NSArray.Operator
for the key unique. |
| Modifier and Type | Field and Description |
|---|---|
static java.lang.String |
NULL_GROUPING_KEY
Holds the null grouping key for use when grouping objects
based on a key that might return null and nulls are allowed
|
| Constructor and Description |
|---|
ERXArrayUtilities() |
| Modifier and Type | Method and Description |
|---|---|
static <T> void |
addObjectsFromArrayWithoutDuplicates(NSMutableArray<T> a1,
NSArray<? extends T> a2)
Adds all of the non-duplicate elements from the second
array to the mutable array.
|
static <T> NSArray<T> |
arrayByAddingObjectsFromArrayWithoutDuplicates(NSArray<? extends T> a1,
NSArray<? extends T> a2)
Creates an array preserving order by adding all of the
non-duplicate values from the second array to the first.
|
static <T> NSArray<T> |
arrayByRemovingFirstObject(NSArray<T> array)
Creates an array that has all of the objects of the parameter array
without the first object.
|
static <T> NSArray<T> |
arrayBySelectingInstancesOfClass(NSArray<?> array,
java.lang.Class<T> aClass)
Prunes an array for only instances of the given class.
|
static <T> boolean |
arrayContainsAnyObjectFromArray(NSArray<? extends T> array,
NSArray<? extends T> objects)
Function to determine if an array contains any of
the elements of another array.
|
static <T> boolean |
arrayContainsArray(NSArray<? extends T> array,
NSArray<? extends T> objects)
Function to determine if an array contains all of
the elements of another array.
|
static NSArray<?> |
arrayForKeysPath(NSArray<?> array,
NSArray<java.lang.String> keys)
Returns an array of dictionaries containing the key/value pairs for the given paths.
|
static NSArray |
arrayFromPropertyList(java.lang.String name,
NSBundle bundle)
Creates an NSArray from a resource associated with a given bundle
that is in property list format.
|
static <T,K,V> NSDictionary<K,NSArray<V>> |
arrayGroupedByKeyPath(NSArray<T> objects,
ERXKey<K> keyPath,
boolean includeNulls,
ERXKey<V> valueKeyPath)
Starting with an array of KeyValueCoding-compliant objects and a keyPath,
this method calls valueForKey on each object in the array and groups the
contents of the array, using the result of the valueForKey call as a key
in a dictionary.
|
static <T,K,V> NSDictionary<K,NSArray<V>> |
arrayGroupedByKeyPath(NSArray<T> objects,
ERXKey<K> keyPath,
K nullGroupingKey,
ERXKey<V> valueKeyPath)
Starting with an array of KeyValueCoding-compliant objects and a keyPath,
this method calls valueForKey on each object in the array and groups the
contents of the array, using the result of the valueForKey call as a key
in a dictionary.
|
static <T,K,V> NSDictionary<K,NSArray<V>> |
arrayGroupedByKeyPath(NSArray<T> objects,
java.lang.String keyPath,
boolean includeNulls,
java.lang.String valueKeyPath)
Starting with an array of KeyValueCoding-compliant objects and a keyPath,
this method calls valueForKey on each object in the array and groups the
contents of the array, using the result of the valueForKey call as a key
in a dictionary.
|
static <K,V> NSDictionary<K,NSArray<V>> |
arrayGroupedByKeyPath(NSArray<V> objects,
ERXKey<K> keyPath)
Starting with an array of KeyValueCoding-compliant objects and a keyPath,
this method calls valueForKey on each object in the array and groups the
contents of the array, using the result of the valueForKey call as a key
in a dictionary.
|
static <K,V> NSDictionary<K,NSArray<V>> |
arrayGroupedByKeyPath(NSArray<V> objects,
java.lang.String keyPath)
Starting with an array of KeyValueCoding-compliant objects and a keyPath,
this method calls valueForKey on each object in the array and groups the
contents of the array, using the result of the valueForKey call as a key
in a dictionary.
|
static NSDictionary |
arrayGroupedByKeyPath(NSArray objects,
java.lang.String keyPath,
java.lang.Object nullGroupingKey,
java.lang.String valueKeyPath)
Starting with an array of KeyValueCoding-compliant objects and a keyPath,
this method calls valueForKey on each object in the array and groups the
contents of the array, using the result of the valueForKey call as a key
in a dictionary.
|
static <T,K,V> NSDictionary<K,NSArray<V>> |
arrayGroupedByToManyKeyPath(NSArray<T> objects,
ERXKey<K> keyPath,
K nullGroupingKey,
ERXKey<V> valueKeyPath)
Typesafe variant of arrayGroupedByToManyKeyPath.
|
static <K,V> NSDictionary<K,NSArray<V>> |
arrayGroupedByToManyKeyPath(NSArray<V> objects,
ERXKey<K> keyPath,
boolean includeNulls)
Typesafe variant of arrayGroupedByToManyKeyPath.
|
static <K,V> NSDictionary<K,NSArray<V>> |
arrayGroupedByToManyKeyPath(NSArray<V> objects,
ERXKey<K> keyPath,
K nullGroupingKey)
Typesafe variant of arrayGroupedByToManyKeyPath.
|
static <K,V> NSDictionary<K,NSArray<V>> |
arrayGroupedByToManyKeyPath(NSArray<V> objects,
java.lang.String keyPath,
boolean includeNulls)
Groups an array of objects by a given to-many key path, where every
single item in the to-many will put the object in the corresponding group.
|
static <K,V> NSDictionary<K,NSArray<V>> |
arrayGroupedByToManyKeyPath(NSArray<V> objects,
java.lang.String keyPath,
K nullGroupingKey)
Groups an array of objects by a given to-many key path, where every
single item in the to-many will put the object in the corresponding group.
|
static NSDictionary |
arrayGroupedByToManyKeyPath(NSArray objects,
java.lang.String keyPath,
java.lang.Object nullGroupingKey,
java.lang.String valueKeyPath)
Groups an array of objects by a given to-many key path, where every
single item in the to-many will put the object in the corresponding group.
|
static boolean |
arrayIsNullOrEmpty(NSArray<?> aNSArray)
Check if an NSArray is null or Empty
|
static <T> NSArray<T> |
arrayMinusArray(NSArray<T> main,
NSArray<?> minus)
Subtracts the contents of one array from another.
|
static <T> NSArray<T> |
arrayMinusObject(NSArray<T> main,
java.lang.Object object)
Subtracts a single object from an array.
|
static <T> boolean |
arraysAreIdenticalSets(NSArray<? super T> a1,
NSArray<? super T> a2)
Simple comparison method to see if two array
objects are identical sets.
|
static java.lang.String |
arrayToLogstring(NSArray<java.lang.String> aNSArray)
To create oneLine Log for an NSArray<String>
|
static <T> NSArray<T> |
arrayWithObjectsAtIndexesSwapped(NSArray<T> array,
int indexOfObject1,
int indexOfObject2)
Swaps the two objects at the given indexes in the given
NSArray and
returns a new NSArray. |
static <T> NSArray<T> |
arrayWithObjectsSwapped(NSArray<T> array,
java.lang.Object object1,
java.lang.Object object2)
Swaps the two given
Objects in the given NSArray and
returns a new NSArray. |
static <T> NSArray<T> |
arrayWithoutDuplicateKeyValue(NSArray<T> objects,
java.lang.String key)
Filters out duplicates of an array of objects
based on the value of the given key path off of those objects.
|
static <T> NSArray<T> |
arrayWithoutDuplicates(NSArray<T> anArray)
Filters out all of the duplicate objects in
a given array.
|
static <T> NSArray<NSArray<T>> |
batchedArrayWithSize(NSArray<T> array,
int batchSize)
Batches an NSArray into sub-arrays of the given size.
|
static <T> NSArray<T> |
deepClone(NSArray<T> array,
boolean onlyCollections)
Returns a deep clone of the given array.
|
static <T> NSSet<T> |
deepClone(NSSet<T> set,
boolean onlyCollections)
Returns a deep clone of the given set.
|
static <K,T> NSDictionary<K,T> |
dictionaryOfObjectsIndexedByKeyPath(NSArray<T> array,
ERXKey<K> keyPath)
Given an array of objects, returns a dictionary mapping the value by performing valueForKeyPath on each object in
the array to the object in the array.
|
static <K,T> NSDictionary<K,T> |
dictionaryOfObjectsIndexedByKeyPath(NSArray<T> array,
java.lang.String keyPath)
Given an array of objects, returns a dictionary mapping the value by performing valueForKeyPath on each object in
the array to the object in the array.
|
static <K,T> NSDictionary<K,T> |
dictionaryOfObjectsIndexedByKeyPathThrowOnCollision(NSArray<T> array,
ERXKey<K> keyPath,
boolean throwOnCollision)
Given an array of objects, returns a dictionary mapping the value by performing valueForKeyPath on each object in
the array to the object in the array.
|
static <K,T> NSDictionary<K,T> |
dictionaryOfObjectsIndexedByKeyPathThrowOnCollision(NSArray<T> array,
java.lang.String keyPath,
boolean throwOnCollision)
Given an array of objects, returns a dictionary mapping the value by performing valueForKeyPath on each object in
the array to the object in the array.
|
static <T> NSArray<T> |
distinct(NSArray<T> array)
Shorter name for arrayWithoutDuplicates, which I always forget the name of.
|
static boolean |
enumerationHasMatchWithQualifierEvaluation(java.util.Enumeration<?> enumeration,
EOQualifierEvaluation qualifier)
Filters any kinds of collections that implements
Enumeration
interface such as NSArray, NSSet, Vector
and Hashtable using the EOQualifierEvaluation interface. |
static <T> NSArray<T> |
filteredArrayWithEntityFetchSpecification(NSArray<T> array,
java.lang.String entity,
java.lang.String fetchSpec)
Filters a given array with a named fetch specification.
|
static <T> NSArray<T> |
filteredArrayWithEntityFetchSpecification(NSArray<T> array,
java.lang.String entity,
java.lang.String fetchSpec,
NSDictionary<java.lang.String,?> bindings)
Filters a given array with a named fetch specification and bindings.
|
static <T> NSArray<T> |
filteredArrayWithFetchSpecificationNamedEntityNamed(NSArray<T> array,
java.lang.String fetchSpec,
java.lang.String entity)
|
static <T> NSArray<T> |
filteredArrayWithFetchSpecificationNamedEntityNamedBindings(NSArray<T> array,
java.lang.String fetchSpec,
java.lang.String entity,
NSDictionary<java.lang.String,?> bindings)
|
static <T> NSArray<T> |
filteredArrayWithQualifierEvaluation(java.util.Enumeration<T> enumeration,
EOQualifierEvaluation qualifier)
Filters any kinds of collections that implements
Enumeration
interface such as NSArray, NSSet, Vector
and Hashtable using the EOQualifierEvaluation interface. |
static <T> NSArray<T> |
filteredArrayWithQualifierEvaluation(java.util.Iterator<T> iterator,
EOQualifierEvaluation qualifier)
Filters any kind of collections that implements
Iterator
interface such as ArrayList, HashMap, SortedSet
and TreeSet using the EOQualifierEvaluation interface. |
static <T> NSArray<T> |
filteredArrayWithQualifierEvaluation(NSArray<T> array,
EOQualifierEvaluation qualifier)
Filters an array using the
EOQualifierEvaluation interface. |
static <T> T |
firstObject(NSArray<T> array)
Returns the first object of the array.
|
static <T> T |
firstObjectWithValueForKeyPath(NSArray<T> array,
java.lang.Object value,
java.lang.String keyPath)
Finds the first object in the array with a given value for a given key path.
|
static NSArray |
flatten(NSArray<?> originalArray)
Recursively flattens an array of arrays and individual
objects into a single array of elements.
|
static NSArray |
flatten(NSArray<?> originalArray,
boolean filterDuplicates)
Recursively flattens an array of arrays and individual
objects into a single array of elements.
|
static java.lang.String |
friendlyDisplayForKeyPath(NSArray<?> list,
java.lang.String attribute,
java.lang.String nullArrayDisplay,
java.lang.String separator,
java.lang.String finalSeparator)
Displays a list of attributes off of
objects in a 'friendly' manner.
|
static int |
indexOfFirstObjectWithValueForKeyPath(NSArray<?> array,
java.lang.Object value,
java.lang.String keyPath)
Finds the index of the first object in the array with a given value for a given keypath.
|
static <T> int |
indexOfObjectUsingEqualator(NSArray<T> array,
T object,
ERXEqualator equalator)
Locates an object within an array using a custom equality check provided as an ERXEqualator.
|
static void |
initialize()
Will register new NSArray operators
sort, sortAsc, sortDesc, sortInsensitiveAsc,
sortInsensitiveDesc, unique, flatten, reverse,
limit, and fetchSpec
|
static <T> NSArray<T> |
intersectingElements(NSArray<? extends T> array1,
NSArray<? extends T> array2)
Intersects the elements of two arrays.
|
static boolean |
iteratorHasMatchWithQualifierEvaluation(java.util.Iterator<?> iterator,
EOQualifierEvaluation qualifier)
Filters any kinds of collections that implements
Iterator
interface such as NSArray, NSSet, Vector
and Hashtable using the EOQualifierEvaluation interface. |
static java.lang.Number |
median(NSArray<?> array,
java.lang.String keypath)
Calculates the median value of an array.
|
static java.lang.String[] |
objectArrayCastToStringArray(java.lang.Object[] o)
Converts an Object array to a String array by casting each element.
|
static java.lang.String |
objectArraysToString(NSArray<java.lang.Object[][]> array)
pretty prints a NSArray of two dimensional Object array which is ugly when using toString
|
static java.lang.String |
objectArrayToString(java.lang.Object[] o)
pretty prints an Object array which is ugly when using toString
|
static java.lang.String |
objectArrayToString(java.lang.Object[][] array)
pretty prints a two dimensional Object array which is ugly when using toString
|
static <T> NSArray<T> |
objectsWithValueForKeyPath(NSArray<T> array,
java.lang.Object valueToLookFor,
java.lang.String keyPath)
Walks over an array and returns an array of objects from that array that have a particular
value for a particular key path.
|
static <T> NSArray<T> |
removeNullValues(NSArray<T> array)
Removes all occurrences of NSKeyValueCoding.NullValue in the provided array
|
static <T> NSArray<T> |
removeNullValues(NSArray<T> target,
NSArray<T> array)
Removes all occurrences of NSKeyValueCoding.NullValue in the provided array
|
static <T> NSArray<T> |
removeNullValuesFromEnd(NSArray<T> array)
removes all occurencies of NSKeyValueCoding.Null from the end of the array
|
static <T> NSArray<T> |
reverse(NSArray<T> array)
Reverses the elements of an array
|
static <T> void |
safeAddObject(NSMutableArray<T> array,
T object)
Adds the object to the mutable array if the object is not null.
|
static <T> NSSet<T> |
setFromArray(NSArray<T> array)
Simply utility method to create a concrete set object from an array.
|
static <T> void |
shiftObjectLeft(NSMutableArray<T> array,
T object)
shifts a given object in an array one value to the left (index--).
|
static <T> void |
shiftObjectRight(NSMutableArray<T> array,
T object)
shifts a given object in an array one value to the right (index++).
|
static void |
sortArrayWithKey(NSMutableArray<?> array,
java.lang.String key)
Sorts a given mutable array with a key in place.
|
static void |
sortArrayWithKey(NSMutableArray<?> array,
java.lang.String key,
NSSelector selector)
Sorts a given mutable array with a key in place.
|
static <T> NSArray<T> |
sortedArraySortedWithKey(NSArray<T> array,
java.lang.String key)
Sorts a given array with a key in ascending fashion.
|
static <T> NSArray<T> |
sortedArraySortedWithKey(NSArray<T> array,
java.lang.String key,
NSSelector selector)
Sorts a given array with a key in ascending fashion.
|
static <T> NSArray<T> |
sortedArraySortedWithKeys(NSArray<T> array,
NSArray<java.lang.String> keys,
NSSelector selector)
Sorts a given array with a set of keys according to the given selector.
|
static <T> NSArray<T> |
sortedArrayUsingComparator(NSArray<T> array,
NSComparator comparator)
Just like the method
NSArray.sortedArrayUsingComparator(NSComparator),
except it catches the NSComparator.ComparisonException and, if thrown,
it wraps it in a runtime exception. |
static <T> NSMutableArray<T> |
sortedMutableArraySortedWithKey(NSArray<T> array,
java.lang.String key)
Sorts a given array with a key in ascending fashion and returns a mutable clone of the result.
|
static NSSelector |
sortSelectorWithKey(java.lang.String key)
The qualifiers EOSortOrdering.CompareAscending and friends are
actually 'special' and processed in a different/faster way when
sorting than a selector that would be created by:
new NSSelector("compareAscending", ObjectClassArray)
This method eases the pain on creating those selectors from a string. |
static java.lang.Number |
stdDev(NSArray<?> array,
java.lang.String keypath,
boolean isPopulation)
Finds the standard deviation of the numeric values found in the array at the
specified keypath.
|
static <T> void |
swapObjectsAtIndexesInArray(NSMutableArray<T> array,
int indexOfA,
int indexOfB)
Swaps two objects at the given indexes in an array inplace
|
static <T> void |
swapObjectsInArray(NSMutableArray<T> array,
T a,
T b)
Swaps two objects a and b in an array inplace
|
static <T> void |
swapObjectWithObjectAtIndexInArray(NSMutableArray<T> array,
T a,
int indexOfB)
Swaps the object a with the object at the given index
|
static java.lang.String[] |
toStringArray(NSArray<?> a) |
static NSArray |
valuesForKeyPaths(java.lang.Object array,
NSArray<java.lang.String> paths)
Performs multiple key-value coding calls against an array or an object.
|
public static final java.lang.String NULL_GROUPING_KEY
public static <T> NSSet<T> setFromArray(NSArray<T> array)
array - of elementspublic static NSSelector sortSelectorWithKey(java.lang.String key)
new NSSelector("compareAscending", ObjectClassArray)
This method eases the pain on creating those selectors from a string.key - sort keynullpublic static <K,V> NSDictionary<K,NSArray<V>> arrayGroupedByKeyPath(NSArray<V> objects, ERXKey<K> keyPath)
See arrayGroupedByKeyPath(NSArray<V> objects, String keyPath) for examples.
This method calls arrayGroupedByKeyPath(NSArray objects, String keyPath, Object nullGroupingKey, String valueKeyPath) with includeNulls set to true and valueKeyPath set to null.
objects - array of objects to be groupedkeyPath - path into objects used to group the objectsNULL_GROUPING_KEYpublic static <K,V> NSDictionary<K,NSArray<V>> arrayGroupedByKeyPath(NSArray<V> objects, java.lang.String keyPath)
If one starts with:
( { lastName = "Barker"; firstName = "Bob"; favoriteColor = "blue"; },
{ firstName = "Bob"; favoriteColor = "red"; },
{ lastName = "Further"; firstName = "Frank"; favoriteColor = "green"; } )
and one calls arrayGroupedByKeyPath(objects, "firstName"), one gets:
{ "Bob" = ( { lastName = "Barker"; firstName = "Bob"; favoriteColor = "blue"; }, { firstName = "Bob"; favoriteColor = "red"; } );
"Frank" = ( { lastName = "Further"; firstName = "Frank"; favoriteColor = "green"; } ); }{ "Bob" = ( { lastName = "Barker"; firstName = "Bob"; favoriteColor = "blue"; } );
"Frank" = ( { lastName = "Further"; firstName = "Frank"; favoriteColor = "green"; } );
"**** NULL GROUPING KEY ****" = ( { firstName = "Bob"; favoriteColor = "red"; } ); }
This method calls arrayGroupedByKeyPath(objects, keyPath, includeNulls, valueKeyPath) with includeNulls set to true and valueKeyPath set to null.
objects - array of objects to be groupedkeyPath - path into objects used to group the objectsNULL_GROUPING_KEYpublic static <T,K,V> NSDictionary<K,NSArray<V>> arrayGroupedByKeyPath(NSArray<T> objects, ERXKey<K> keyPath, boolean includeNulls, ERXKey<V> valueKeyPath)
See arrayGroupedByKeyPath(NSArray<T> objects, String keyPath, boolean includeNulls, String valueKeyPath) for examples.
objects - array of objects to be groupedkeyPath - path into objects used to group the objectsincludeNulls - determines if keyPaths that resolve to null
are included in the resulting dictionaryvalueKeyPath - used to call valueForKey on the arrays in
the results dictionary, with the results of those calls each
replacing the corresponding array in the results dictionary.NULL_GROUPING_KEYpublic static <T,K,V> NSDictionary<K,NSArray<V>> arrayGroupedByKeyPath(NSArray<T> objects, java.lang.String keyPath, boolean includeNulls, java.lang.String valueKeyPath)
If one starts with:
( { lastName = "Barker"; firstName = "Bob"; favoriteColor = "blue"; },
{ firstName = "Bob"; favoriteColor = "red"; },
{ lastName = "Further"; firstName = "Frank"; favoriteColor = "green"; } )
and one calls arrayGroupedByKeyPath(objects, "firstName", true, "favoriteColor"), one gets:
{Frank = ("green"); Bob = ("blue", "red");
If one calls arrayGroupedByKeyPath(objects, "lastName", false, "favoriteColor"), one gets:
{Further = ("green"); Barker = ("blue"); }
If one calls arrayGroupedByKeyPath(objects, "lastName", true, "favoriteColor"), one gets:
{Further = ("green"); Barker = ("blue"); "**** NULL GROUPING KEY ****" = ("red"); }objects - array of objects to be groupedkeyPath - path into objects used to group the objectsincludeNulls - determines if keyPaths that resolve to null
are included in the resulting dictionaryvalueKeyPath - used to call valueForKey on the arrays in
the results dictionary, with the results of those calls each
replacing the corresponding array in the results dictionary.NULL_GROUPING_KEYpublic static <T,K,V> NSDictionary<K,NSArray<V>> arrayGroupedByKeyPath(NSArray<T> objects, ERXKey<K> keyPath, K nullGroupingKey, ERXKey<V> valueKeyPath)
See arrayGroupedByKeyPath(NSArray objects, String keyPath, Object nullGroupingKey, String valueKeyPath) for examples.
objects - array of objects to be groupedkeyPath - path into objects used to group the objectsnullGroupingKey - used as the key in the results dictionary
for the array of objects for which the valueForKey with keyPath
result is null.valueKeyPath - used to call valueForKey on the arrays in
the results dictionary, with the results of those calls each
replacing the corresponding array in the results dictionary.NULL_GROUPING_KEYpublic static NSDictionary arrayGroupedByKeyPath(NSArray objects, java.lang.String keyPath, java.lang.Object nullGroupingKey, java.lang.String valueKeyPath)
If one starts with:
( { lastName = "Barker"; firstName = "Bob"; favoriteColor = "blue"; },
{ firstName = "Bob"; favoriteColor = "red"; },
{ lastName = "Further"; firstName = "Frank"; favoriteColor = "green"; } )
and one calls arrayGroupedByKeyPath(objects, "firstName", null, "favoriteColor"), one gets:
{Frank = ("green"); Bob = ("blue", "red");
If one calls arrayGroupedByKeyPath(objects, "lastName", "extra", "favoriteColor"), one gets:
{Further = ("green"); Barker = ("blue"); "extra" = ("red"); }
If one calls arrayGroupedByKeyPath(objects, "lastName", null, "favoriteColor"), one gets:
{Further = ("green"); Barker = ("blue"); "**** NULL GROUPING KEY ****" = ("red"); }objects - array of objects to be groupedkeyPath - path into objects used to group the objectsnullGroupingKey - used as the key in the results dictionary
for the array of objects for which the valueForKey with keyPath
result is null.valueKeyPath - used to call valueForKey on the arrays in
the results dictionary, with the results of those calls each
replacing the corresponding array in the results dictionary.NULL_GROUPING_KEYpublic static <K,V> NSDictionary<K,NSArray<V>> arrayGroupedByToManyKeyPath(NSArray<V> objects, ERXKey<K> keyPath, boolean includeNulls)
objects - the objects to be groupedkeyPath - the key to group byincludeNulls - determins if the keypaths that resolve to null should be allowed in the grouppublic static <K,V> NSDictionary<K,NSArray<V>> arrayGroupedByToManyKeyPath(NSArray<V> objects, java.lang.String keyPath, boolean includeNulls)
arrayGroupedByToManyKeyPath(users, "roles.name") would be
"admin" = (user1, user2); "editor" = (user3);....
The dictionary that is returned contains keys that correspond to the grouped
keys values. This means that the object pointed to by the key
path must be a cloneable object. For instance using the key path
'users' would not work because enterprise objects are not
cloneable. Instead you might choose to use the key path 'users.name'
of 'users.primaryKey', if your enterprise objects support this
see ERXGenericRecord if interested.objects - array of objects to be groupedkeyPath - path used to group the objects.includeNulls - determines if keyPaths that resolve to null
should be allowed into the group.public static <K,V> NSDictionary<K,NSArray<V>> arrayGroupedByToManyKeyPath(NSArray<V> objects, ERXKey<K> keyPath, K nullGroupingKey)
objects - array of objects to be groupedkeyPath - path used to group the objects.nullGroupingKey - if not-null, determines if keyPaths that resolve to null
should be allowed into the group; if so, this key is used for thempublic static <K,V> NSDictionary<K,NSArray<V>> arrayGroupedByToManyKeyPath(NSArray<V> objects, java.lang.String keyPath, K nullGroupingKey)
ERXGenericRecord if interested.objects - array of objects to be groupedkeyPath - path used to group the objects.nullGroupingKey - if not-null, determines if keyPaths that resolve to null
should be allowed into the group; if so, this key is used for thempublic static <T,K,V> NSDictionary<K,NSArray<V>> arrayGroupedByToManyKeyPath(NSArray<T> objects, ERXKey<K> keyPath, K nullGroupingKey, ERXKey<V> valueKeyPath)
objects - array of objects to be groupedkeyPath - path used to group the objects.nullGroupingKey - if not-null, determines if keyPaths that resolve to null
should be allowed into the group; if so, this key is used for themvalueKeyPath - allows the grouped objects in the result to be
derived from objects (by evaluating valueKeyPath), instead
of being members of the objects collection. Objects that
evaluate valueKeyPath to null have no value included in the
resultpublic static NSDictionary arrayGroupedByToManyKeyPath(NSArray objects, java.lang.String keyPath, java.lang.Object nullGroupingKey, java.lang.String valueKeyPath)
ERXGenericRecord if interested.objects - array of objects to be groupedkeyPath - path used to group the objects.nullGroupingKey - if not-null, determines if keyPaths that resolve to null
should be allowed into the group; if so, this key is used for themvalueKeyPath - allows the grouped objects in the result to be
derived from objects (by evaluating valueKeyPath), instead
of being members of the objects collection. Objects that
evaluate valueKeyPath to null have no value included in the
resultpublic static <T> boolean arraysAreIdenticalSets(NSArray<? super T> a1, NSArray<? super T> a2)
a1 - first arraya2 - second arraypublic static <T> NSArray<T> filteredArrayWithQualifierEvaluation(NSArray<T> array, EOQualifierEvaluation qualifier)
EOQualifierEvaluation interface.array - to be filteredqualifier - to do the filteringpublic static <T> NSArray<T> filteredArrayWithQualifierEvaluation(java.util.Enumeration<T> enumeration, EOQualifierEvaluation qualifier)
Enumeration
interface such as NSArray, NSSet, Vector
and Hashtable using the EOQualifierEvaluation interface.enumeration - to be filtered; to obtain an enumeration,
use objectEnumerator() for the collections in
com.webobjects.foundation package
and use elements() for the Vector and Hashtablequalifier - to do the filteringpublic static boolean enumerationHasMatchWithQualifierEvaluation(java.util.Enumeration<?> enumeration,
EOQualifierEvaluation qualifier)
Enumeration
interface such as NSArray, NSSet, Vector
and Hashtable using the EOQualifierEvaluation interface.enumeration - to be filtered; to obtain an enumeration,
use objectEnumerator() for the collections in
com.webobjects.foundation package
and use elements() for the Vector and Hashtablequalifier - to do the filteringpublic static boolean iteratorHasMatchWithQualifierEvaluation(java.util.Iterator<?> iterator,
EOQualifierEvaluation qualifier)
Iterator
interface such as NSArray, NSSet, Vector
and Hashtable using the EOQualifierEvaluation interface.iterator - to be filtered; to obtain an iterator,
use iterator() for the java collectionsqualifier - to do the filteringpublic static <T> NSArray<T> filteredArrayWithQualifierEvaluation(java.util.Iterator<T> iterator, EOQualifierEvaluation qualifier)
Iterator
interface such as ArrayList, HashMap, SortedSet
and TreeSet using the EOQualifierEvaluation interface.iterator - to be filtered; use iterator() to obtain
an iterator from the collectionsqualifier - to do the filteringpublic static <T> NSArray<T> arrayWithoutDuplicateKeyValue(NSArray<T> objects, java.lang.String key)
objects - array of objectskey - keypath to be evaluated off of every objectpublic static <T> NSArray<T> arrayMinusArray(NSArray<T> main, NSArray<?> minus)
main - array to have values removed from it.minus - array of values to remove from the main arraypublic static <T> NSArray<T> arrayMinusObject(NSArray<T> main, java.lang.Object object)
main - array to have value removed from it.object - to be removedpublic static <T> NSArray<T> arrayByAddingObjectsFromArrayWithoutDuplicates(NSArray<? extends T> a1, NSArray<? extends T> a2)
a1 - first arraya2 - second arraypublic static <T> NSArray<T> arrayByRemovingFirstObject(NSArray<T> array)
array - the array to use to create the resultpublic static <T> void safeAddObject(NSMutableArray<T> array, T object)
array - mutable array where non-null object will be addedobject - to be added to arraypublic static <T> void addObjectsFromArrayWithoutDuplicates(NSMutableArray<T> a1, NSArray<? extends T> a2)
a1 - mutable array where non-duplicate objects are
addeda2 - array to be added to a1public static NSArray flatten(NSArray<?> originalArray, boolean filterDuplicates)
For example:
NSArray foos; //Assume exists
NSArray bars = (NSArray)foos.valueForKey("toBars");
In this case if foos contained five elements
then the array bars will contain five arrays
each corresponding to what aFoo.toBars would
return. To have the entire collection of bars
in one single array you would call:
NSArray allBars = flatten(bars)originalArray - array to be flattenedfilterDuplicates - determines if the duplicate values
should be filteredpublic static NSArray flatten(NSArray<?> originalArray)
For example:
NSArray foos; //Assume exists
NSArray bars = (NSArray)foos.valueForKey("toBars");
In this case if foos contained five elements
then the array bars will contain five arrays
each corresponding to what aFoo.toBars would
return. To have the entire collection of bars
in one single array you would call:
NSArray allBars = flatten(bars)originalArray - array to be flattenedpublic static NSArray arrayFromPropertyList(java.lang.String name, NSBundle bundle)
name - name of the file or resource.bundle - NSBundle to which the resource belongs.public static NSArray valuesForKeyPaths(java.lang.Object array, NSArray<java.lang.String> paths)
array - collection or object to be acted upon.paths - array of keypaths.public static <T> T firstObject(NSArray<T> array)
array - the array to search.public static int indexOfFirstObjectWithValueForKeyPath(NSArray<?> array, java.lang.Object value, java.lang.String keyPath)
array - the array to search.value - the value to look for.keyPath - the keypath to use to compare to value.public static <T> T firstObjectWithValueForKeyPath(NSArray<T> array, java.lang.Object value, java.lang.String keyPath)
array - the array to search.value - the value to look for.keyPath - the keypath to use to compare to value.public static <T> NSArray<T> objectsWithValueForKeyPath(NSArray<T> array, java.lang.Object valueToLookFor, java.lang.String keyPath)
array - array to searchvalueToLookFor - value to look forkeyPath - key path to apply on each object on the array to compare against valueToLookForpublic static <T> int indexOfObjectUsingEqualator(NSArray<T> array, T object, ERXEqualator equalator)
array - the array to search.object - the object to look for.equalator - the equalator to use for performing the equality check between object and each object
in the array.public static <T> NSMutableArray<T> sortedMutableArraySortedWithKey(NSArray<T> array, java.lang.String key)
array - array to be sorted.key - sort key.public static <T> NSArray<T> sortedArraySortedWithKey(NSArray<T> array, java.lang.String key)
array - array to be sorted.key - sort key.public static <T> NSArray<T> sortedArraySortedWithKey(NSArray<T> array, java.lang.String key, NSSelector selector)
array - array to be sorted.key - sort key.selector - sort order selector to use, if null, then sort will be case insensitive ascending.public static <T> NSArray<T> sortedArraySortedWithKeys(NSArray<T> array, NSArray<java.lang.String> keys, NSSelector selector)
array - array to be sorted.keys - sort keysselector - sort order selector to use, if null, then sort will be case insensitive ascending.public static void sortArrayWithKey(NSMutableArray<?> array, java.lang.String key)
array - array to be sorted.key - sort key.public static void sortArrayWithKey(NSMutableArray<?> array, java.lang.String key, NSSelector selector)
array - array to be sorted.key - sort key.selector - sort order selector to use, if null, then sort will be ascending.public static void initialize()
public static java.lang.Number median(NSArray<?> array, java.lang.String keypath)
array - array of objectskeypath - key path for the medianpublic static java.lang.Number stdDev(NSArray<?> array, java.lang.String keypath, boolean isPopulation)
array - an array of objectskeypath - a key path to a numeric value on each objectisPopulation - public static <T> NSArray<T> distinct(NSArray<T> array)
T - type of the arrayarray - the array to return distinct values frompublic static <T> NSArray<T> arrayWithoutDuplicates(NSArray<T> anArray)
anArray - to be filteredpublic static <T> NSArray<NSArray<T>> batchedArrayWithSize(NSArray<T> array, int batchSize)
array - array to batchbatchSize - number of items in each batchpublic static <T> NSArray<T> filteredArrayWithEntityFetchSpecification(NSArray<T> array, java.lang.String entity, java.lang.String fetchSpec, NSDictionary<java.lang.String,?> bindings)
array - array to be filtered.fetchSpec - name of the EOQualifierEvaluation.entity - name of the EOEntity
to which the fetch specification is associated.bindings - bindings dictionary for qualifier variable substitution.@Deprecated public static <T> NSArray<T> filteredArrayWithFetchSpecificationNamedEntityNamedBindings(NSArray<T> array, java.lang.String fetchSpec, java.lang.String entity, NSDictionary<java.lang.String,?> bindings)
@Deprecated public static <T> NSArray<T> filteredArrayWithFetchSpecificationNamedEntityNamed(NSArray<T> array, java.lang.String fetchSpec, java.lang.String entity)
public static <T> NSArray<T> filteredArrayWithEntityFetchSpecification(NSArray<T> array, java.lang.String entity, java.lang.String fetchSpec)
array - array to be filtered.fetchSpec - name of the EOQualifierEvaluation.entity - name of the EOEntity
to which the fetch specification is associated.public static <T> void shiftObjectLeft(NSMutableArray<T> array, T object)
array - array to be modified.object - the object that should be movedpublic static <T> void shiftObjectRight(NSMutableArray<T> array, T object)
array - array to be modified.object - the object that should be movedpublic static <T> boolean arrayContainsAnyObjectFromArray(NSArray<? extends T> array, NSArray<? extends T> objects)
array - to test if it contains any of the objectsobjects - array of objects to test if the first array
contains any ofpublic static <T> boolean arrayContainsArray(NSArray<? extends T> array, NSArray<? extends T> objects)
array - to test if it contains all of the objects of another arrayobjects - array of objects to test if the first array
contains all ofpublic static <T> NSArray<T> intersectingElements(NSArray<? extends T> array1, NSArray<? extends T> array2)
array1 - the first arrayarray2 - the second arraypublic static <T> NSArray<T> reverse(NSArray<T> array)
array - to be reversedpublic static java.lang.String friendlyDisplayForKeyPath(NSArray<?> list, java.lang.String attribute, java.lang.String nullArrayDisplay, java.lang.String separator, java.lang.String finalSeparator)
For example, given an array containing three user objects and the attribute key "firstName", the result of calling this method would be the string: "Max, Anjo and Patrice".
list - of objects to be displayed in a friendly
mannerattribute - key to be called on each object in
the listnullArrayDisplay - string to be returned if the
list is null or emptyseparator - string to be used for the first itemsfinalSeparator - used between the last itemspublic static NSArray<?> arrayForKeysPath(NSArray<?> array, NSArray<java.lang.String> keys)
array - array of objectskeys - array of keyspublic static <T> NSArray<T> removeNullValues(NSArray<T> array)
array - the array from which the NullValue should be removedpublic static <T> NSArray<T> removeNullValues(NSArray<T> target, NSArray<T> array)
target - array to remove objects fromarray - array of valuespublic static java.lang.String[] objectArrayCastToStringArray(java.lang.Object[] o)
String[] myStringArray = (String[])myObjectArray;
except that it creates a clone of the array.o - an Object array containing String elementspublic static java.lang.String objectArrayToString(java.lang.Object[] o)
o - the object which one wants to print as a Stringlog.info("my array = "+ERXArrayUtilities.objectArrayToString(myArray));public static java.lang.String objectArrayToString(java.lang.Object[][] array)
array - the object which one wants to print as a Stringlog.info("my array = "+ERXArrayUtilities.objectArrayToString(myArray));public static java.lang.String objectArraysToString(NSArray<java.lang.Object[][]> array)
array - the object which one wants to print as a Stringlog.info("my array = "+ERXArrayUtilities.objectArrayToString(myArray));public static <T> NSArray<T> removeNullValuesFromEnd(NSArray<T> array)
array - the array from which the values should be removedpublic static java.lang.String[] toStringArray(NSArray<?> a)
public static <K,T> NSDictionary<K,T> dictionaryOfObjectsIndexedByKeyPath(NSArray<T> array, ERXKey<K> keyPath)
dictionaryOfObjectsIndexedByKeyPathThrowOnCollision() passing false for throwOnCollision.array - array to indexkeyPath - keyPath to index. If any object returns null or NSKeyValueCoding.NullValue for this keyPath, the
object is not put into the resulting dictionary.null, an empty dictionary is returned.public static <K,T> NSDictionary<K,T> dictionaryOfObjectsIndexedByKeyPath(NSArray<T> array, java.lang.String keyPath)
dictionaryOfObjectsIndexedByKeyPathThrowOnCollision() passing false for throwOnCollision.array - array to indexkeyPath - keyPath to index. If any object returns null or NSKeyValueCoding.NullValue for this keyPath, the
object is not put into the resulting dictionary.null, an empty dictionary is returned.public static <K,T> NSDictionary<K,T> dictionaryOfObjectsIndexedByKeyPathThrowOnCollision(NSArray<T> array, ERXKey<K> keyPath, boolean throwOnCollision)
array - array to indexkeyPath - keyPath to index. If any object returns null or NSKeyValueCoding.NullValue for this keyPath, the
object is not put into the resulting dictionary.throwOnCollision - if true and two objects in the array have the same non-null (or non-NullValue) value for keyPath,
an exception is thrown. If false, the last object in the array wins.null, an empty dictionary is returned.public static <K,T> NSDictionary<K,T> dictionaryOfObjectsIndexedByKeyPathThrowOnCollision(NSArray<T> array, java.lang.String keyPath, boolean throwOnCollision)
array - array to indexkeyPath - keyPath to index. If any object returns null or NSKeyValueCoding.NullValue for this keyPath, the
object is not put into the resulting dictionary.throwOnCollision - if true and two objects in the array have the same non-null (or non-NullValue) value for keyPath,
an exception is thrown. If false, the last object in the array wins.null, an empty dictionary is returned.public static <T> NSArray<T> arrayBySelectingInstancesOfClass(NSArray<?> array, java.lang.Class<T> aClass)
array - array to processaClass - class to use. null results in the result being a copy of the array.array where each object in the result is
an instance of aClass.public static <T> NSArray<T> sortedArrayUsingComparator(NSArray<T> array, NSComparator comparator)
NSArray.sortedArrayUsingComparator(NSComparator),
except it catches the NSComparator.ComparisonException and, if thrown,
it wraps it in a runtime exception. Returns null when passed null for array.T - array - comparator - public static <T> NSArray<T> arrayWithObjectsSwapped(NSArray<T> array, java.lang.Object object1, java.lang.Object object2)
Objects in the given NSArray and
returns a new NSArray. If one of the Objects is not
element of the NSArray a RuntimeException will be thrown.T - array - in that the two given Objects have to be swappedobject1 - one object in the NSArray that will be swappedobject2 - the other object in the NSArray that will be swappedNSArray with the swapped elementsjava.lang.RuntimeException - if one of the Objects is not in the NSArraypublic static <T> NSArray<T> arrayWithObjectsAtIndexesSwapped(NSArray<T> array, int indexOfObject1, int indexOfObject2)
NSArray and
returns a new NSArray.array - in that the two Objects at the given indexes have to be swappedindexOfObject1 - index of one object in the NSArray that will be swappedindexOfObject2 - index of the other object in the NSArray that will be swappedNSArray with the swapped elementsjava.lang.RuntimeException - if one of the indexes is out of boundpublic static <T> void swapObjectsInArray(NSMutableArray<T> array, T a, T b)
array - the arraya - - first objectb - - second objectjava.lang.RuntimeException - if one or both indexes are out of boundspublic static <T> void swapObjectsAtIndexesInArray(NSMutableArray<T> array, int indexOfA, int indexOfB)
array - the arrayindexOfA - - index of the first objectindexOfB - - index of the second objectjava.lang.RuntimeException - if one or both indexes are out of boundspublic static <T> void swapObjectWithObjectAtIndexInArray(NSMutableArray<T> array, T a, int indexOfB)
array - the arraya - - first objectindexOfB - - index of second objectpublic static <T> NSArray<T> deepClone(NSArray<T> array, boolean onlyCollections)
array - the array to cloneonlyCollections - if true, only collections in this array will be cloned, not individual valuespublic static <T> NSSet<T> deepClone(NSSet<T> set, boolean onlyCollections)
set - the set to cloneonlyCollections - if true, only collections in this array will be cloned, not individual valuespublic static boolean arrayIsNullOrEmpty(NSArray<?> aNSArray)
aNSArray - - NSArrayaNSArray - - NSArraytrue returns
配列が null か空かをチェックしますpublic static java.lang.String arrayToLogstring(NSArray<java.lang.String> aNSArray)
aNSArray - - NSArrayaNSArray - - 文字列配列Copyright © 2002 – 2022 Project Wonder.