프리미티브를위한 Java 벡터 또는 배열 목록
-
18-09-2019 - |
문제
Java API에는 확장 가능한 배열 클래스가 Vector
또는 ArrayList
프리미티브 (int, char, double 등)와 함께 사용할 수있는 클래스?
정수를위한 빠르고 확장 가능한 배열이 필요하며 그것들을 Integer
함께 사용하기 위해 클래스 Vector
또는 ArrayList
. 내 Google-Fu가 실패하고 있습니다.
해결책
불행히도 있습니다 그런 수업이 없습니다, 적어도 Java API에서. 거기에 있습니다 Java의 원시 컬렉션 제 3 자 제품.
기존 컬렉션 클래스 (특히 List
구현). 예를 들어:
List<Integer> l = new ArrayList<Integer>();
l.add(4);
l.remove(4); //will throw ArrayIndexOutOfBoundsException
l.remove(new Integer(4)); //what you probably intended!
그리고 그것은 또한 신비한 일반적인 원천입니다 NullPointerExceptions
액세스 (아마도 a Map
):
Map<String, Integer> m = new HashMap<String, Integer>();
m.put("Hello", 5);
int i = m.get("Helo Misspelt"); //will throw a NullPointerException
다른 팁
http://trove4j.sourceforge.net/
Trove Library는 Java를위한 고속 일반 및 원시 컬렉션을 제공합니다.
Trove는 프리미티브를 사용하기 때문에 정의하는 유형은 java.util 컬렉션 인터페이스를 구현하지 않습니다.
(LGPL 라이센스)
Modern Java는 프리미티브의 자서전을 지원하므로
List<Integer> lst = new ArrayList<Integer>;
lst.add(42);
그것은 적어도 새로운 정수의 구문 식초를 피합니다 (42).
도 있습니다 Java의 원시 컬렉션 그러나 그것은 약간 오래된 것입니다.
일식 컬렉션 원시 세트, 가방, 스택 및 맵뿐만 아니라 모든 원시 유형에 대한 기본 배열리스트가 있습니다. 모든 원시 컨테이너 유형의 불변 버전도 있습니다.
참고 : 나는 Eclipse 컬렉션을위한 커피터입니다.