org.python.util.Generic Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jython-slim Show documentation
Show all versions of jython-slim Show documentation
Jython is an implementation of the high-level, dynamic, object-oriented
language Python written in 100% Pure Java, and seamlessly integrated with
the Java platform. It thus allows you to run Python on any Java platform.
package org.python.util;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.IdentityHashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
/**
* Static methods to make instances of collections with their generic types inferred from what
* they're being assigned to. The idea is stolen from Sets
, Lists
and
* Maps
from Google
* Collections.
*/
public class Generic {
/**
* Our default ConcurrentHashMap sizes. Only concurreny level differs from
* ConcurrentHashMap's defaults: it's significantly lower to reduce allocation cost.
*/
public static final int CHM_INITIAL_CAPACITY = 16;
public static final float CHM_LOAD_FACTOR = 0.75f;
public static final int CHM_CONCURRENCY_LEVEL = 2;
/**
* Makes a List with its generic type inferred from whatever it's being assigned to.
*/
public static List list() {
return new ArrayList();
}
/**
* Makes a List with its generic type inferred from whatever it's being assigned to.
* Sets initial capacity accordingly.
*/
public static List list(int capacity) {
return new ArrayList(capacity);
}
/**
* Makes a List with its generic type inferred from whatever it's being assigned to filled with
* the items in contents
.
*/
@SafeVarargs
public static List list(U... contents) {
List l = new ArrayList(contents.length);
for (T t : contents) {
l.add(t);
}
return l;
}
/**
* Makes a Map using generic types inferred from whatever this is being assigned to.
*/
public static Map map() {
return new HashMap();
}
/**
* Makes an IdentityHashMap using generic types inferred from whatever this is being
* assigned to.
*/
public static Map identityHashMap() {
return new IdentityHashMap();
}
/**
* Makes an IdentityHashMap using generic types inferred from whatever this is being
* assigned to.
* Sets initial capacity accordingly.
*/
public static Map identityHashMap(int capacity) {
return new IdentityHashMap(capacity);
}
/**
* Makes a ConcurrentMap using generic types inferred from whatever this is being
* assigned to.
*/
public static ConcurrentMap concurrentMap() {
return new ConcurrentHashMap(CHM_INITIAL_CAPACITY, CHM_LOAD_FACTOR,
CHM_CONCURRENCY_LEVEL);
}
/**
* Makes a Set using the generic type inferred from whatever this is being assigned to.
*/
public static Set set() {
return new HashSet();
}
/**
* Makes a LinkedHashSet using the generic type inferred from whatever this is being assigned to.
*/
public static Set linkedHashSet() {
return new LinkedHashSet();
}
/**
* Makes a LinkedHashSet using the generic type inferred from whatever this is being assigned to.
* Sets initial capacity accordingly.
*/
public static Set linkedHashSet(int capacity) {
return new LinkedHashSet(capacity);
}
/**
* Makes a Set using the generic type inferred from whatever this is being assigned to filled
* with the items in contents
.
*/
@SafeVarargs
public static Set set(U... contents) {
Set s = new HashSet(contents.length);
for (U u : contents) {
s.add(u);
}
return s;
}
/**
* Makes a Set, ensuring safe concurrent operations, using generic types inferred from
* whatever this is being assigned to.
*/
public static Set concurrentSet() {
return Collections.newSetFromMap(Generic.concurrentMap());
}
}