Package org.eclipse.jetty.util
Class LazyList
- java.lang.Object
-
- org.eclipse.jetty.util.LazyList
-
- All Implemented Interfaces:
java.io.Serializable
,java.lang.Cloneable
public class LazyList extends java.lang.Object implements java.lang.Cloneable, java.io.Serializable
Lazy List creation.A List helper class that attempts to avoid unnecessary List creation. If a method needs to create a List to return, but it is expected that this will either be empty or frequently contain a single item, then using LazyList will avoid additional object creations by using
Collections.EMPTY_LIST
orCollections.singletonList(Object)
where possible.LazyList works by passing an opaque representation of the list in and out of all the LazyList methods. This opaque object is either null for an empty list, an Object for a list with a single entry or an
UsageArrayList
for a list of items.Object lazylist =null; while(loopCondition) { Object item = getItem(); if (item.isToBeAdded()) lazylist = LazyList.add(lazylist,item); } return LazyList.getList(lazylist);
An ArrayList of default size is used as the initial LazyList.- See Also:
List
, Serialized Form
-
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static java.lang.Object
add(java.lang.Object list, int index, java.lang.Object item)
Add an item to a LazyListstatic java.lang.Object
add(java.lang.Object list, java.lang.Object item)
Add an item to a LazyListstatic java.lang.Object
addArray(java.lang.Object list, java.lang.Object[] array)
Add the contents of an array to a LazyListstatic java.lang.Object
addCollection(java.lang.Object list, java.util.Collection<?> collection)
Add the contents of a Collection to a LazyListstatic java.lang.Object
clone(java.lang.Object list)
static boolean
contains(java.lang.Object list, java.lang.Object item)
static java.lang.Object
ensureSize(java.lang.Object list, int initialSize)
Ensure the capacity of the underlying list.static <E> E
get(java.lang.Object list, int i)
Get item from the liststatic <E> java.util.List<E>
getList(java.lang.Object list)
Get the real List from a LazyList.static <E> java.util.List<E>
getList(java.lang.Object list, boolean nullForEmpty)
Get the real List from a LazyList.static boolean
hasEntry(java.lang.Object list)
Simple utility method to test if List has at least 1 entry.static boolean
isEmpty(java.lang.Object list)
Simple utility method to test if List is emptystatic <E> java.util.Iterator<E>
iterator(java.lang.Object list)
static <E> java.util.ListIterator<E>
listIterator(java.lang.Object list)
static java.lang.Object
remove(java.lang.Object list, int i)
static java.lang.Object
remove(java.lang.Object list, java.lang.Object o)
static int
size(java.lang.Object list)
The size of a lazy Liststatic java.lang.Object
toArray(java.lang.Object list, java.lang.Class<?> clazz)
Convert a lazylist to an arraystatic java.lang.String
toString(java.lang.Object list)
static java.lang.String[]
toStringArray(java.lang.Object list)
-
-
-
Method Detail
-
add
public static java.lang.Object add(java.lang.Object list, java.lang.Object item)
Add an item to a LazyList- Parameters:
list
- The list to add to or null if none yet created.item
- The item to add.- Returns:
- The lazylist created or added to.
-
add
public static java.lang.Object add(java.lang.Object list, int index, java.lang.Object item)
Add an item to a LazyList- Parameters:
list
- The list to add to or null if none yet created.index
- The index to add the item at.item
- The item to add.- Returns:
- The lazylist created or added to.
-
addCollection
public static java.lang.Object addCollection(java.lang.Object list, java.util.Collection<?> collection)
Add the contents of a Collection to a LazyList- Parameters:
list
- The list to add to or null if none yet created.collection
- The Collection whose contents should be added.- Returns:
- The lazylist created or added to.
-
addArray
public static java.lang.Object addArray(java.lang.Object list, java.lang.Object[] array)
Add the contents of an array to a LazyList- Parameters:
list
- The list to add to or null if none yet created.array
- The array whose contents should be added.- Returns:
- The lazylist created or added to.
-
ensureSize
public static java.lang.Object ensureSize(java.lang.Object list, int initialSize)
Ensure the capacity of the underlying list.- Parameters:
list
- the list to growinitialSize
- the size to grow to- Returns:
- the new List with new size
-
remove
public static java.lang.Object remove(java.lang.Object list, java.lang.Object o)
-
remove
public static java.lang.Object remove(java.lang.Object list, int i)
-
getList
public static <E> java.util.List<E> getList(java.lang.Object list)
Get the real List from a LazyList.- Type Parameters:
E
- the list entry type- Parameters:
list
- A LazyList returned from LazyList.add(Object)- Returns:
- The List of added items, which may be an EMPTY_LIST or a SingletonList.
-
getList
public static <E> java.util.List<E> getList(java.lang.Object list, boolean nullForEmpty)
Get the real List from a LazyList.- Type Parameters:
E
- the list entry type- Parameters:
list
- A LazyList returned from LazyList.add(Object) or nullnullForEmpty
- If true, null is returned instead of an empty list.- Returns:
- The List of added items, which may be null, an EMPTY_LIST or a SingletonList.
-
hasEntry
public static boolean hasEntry(java.lang.Object list)
Simple utility method to test if List has at least 1 entry.- Parameters:
list
- a LazyList,List
orObject
- Returns:
- true if not-null and is not empty
-
isEmpty
public static boolean isEmpty(java.lang.Object list)
Simple utility method to test if List is empty- Parameters:
list
- a LazyList,List
orObject
- Returns:
- true if null or is empty
-
toStringArray
public static java.lang.String[] toStringArray(java.lang.Object list)
-
toArray
public static java.lang.Object toArray(java.lang.Object list, java.lang.Class<?> clazz)
Convert a lazylist to an array- Parameters:
list
- The list to convertclazz
- The class of the array, which may be a primitive type- Returns:
- array of the lazylist entries passed in
-
size
public static int size(java.lang.Object list)
The size of a lazy List- Parameters:
list
- A LazyList returned from LazyList.add(Object) or null- Returns:
- the size of the list.
-
get
public static <E> E get(java.lang.Object list, int i)
Get item from the list- Type Parameters:
E
- the list entry type- Parameters:
list
- A LazyList returned from LazyList.add(Object) or nulli
- int index- Returns:
- the item from the list.
-
contains
public static boolean contains(java.lang.Object list, java.lang.Object item)
-
clone
public static java.lang.Object clone(java.lang.Object list)
-
toString
public static java.lang.String toString(java.lang.Object list)
-
iterator
public static <E> java.util.Iterator<E> iterator(java.lang.Object list)
-
listIterator
public static <E> java.util.ListIterator<E> listIterator(java.lang.Object list)
-
-