Basic Java collections

var coll = new JavaArray(2)

assert coll[0].is_java_null
coll[0] = "zero".to_java_string
coll[1] = "one".to_java_string

assert coll.length == 2
assert coll.first.to_s == "zero"
assert coll[1].to_s == "one"
assert [for e in coll do e.to_s] == ["zero", "one"]

Introduced classes

extern class AbstractJavaArray[E: Object]

java :: AbstractJavaArray

Java primitive array
extern class JavaArray

java :: JavaArray

Java primitive array Object[]
private class JavaArrayIterator[E: Object]

java :: JavaArrayIterator

An Iterator on Java primitive arrays
private class JavaArrayReverseIterator[E: Object]

java :: JavaArrayReverseIterator

A reverse Iterator on Java primitive arrays
extern class JavaBoolArray

java :: JavaBoolArray

Java primitive array boolean[]
extern class JavaByteArray

java :: JavaByteArray

Java primitive array byte[]
extern class JavaCharArray

java :: JavaCharArray

Java primitive array char[]
extern class JavaDoubleArray

java :: JavaDoubleArray

Java primitive array double[]
extern class JavaFloatArray

java :: JavaFloatArray

Java primitive array float[]
extern class JavaIntArray

java :: JavaIntArray

Java primitive array int[]
extern class JavaLongArray

java :: JavaLongArray

Java primitive array long[]
extern class JavaShortArray

java :: JavaShortArray

Java primitive array short[]

All class definitions

extern class AbstractJavaArray[E: Object]

java $ AbstractJavaArray

Java primitive array
extern class JavaArray

java $ JavaArray

Java primitive array Object[]
private class JavaArrayIterator[E: Object]

java $ JavaArrayIterator

An Iterator on Java primitive arrays
private class JavaArrayReverseIterator[E: Object]

java $ JavaArrayReverseIterator

A reverse Iterator on Java primitive arrays
extern class JavaBoolArray

java $ JavaBoolArray

Java primitive array boolean[]
extern class JavaByteArray

java $ JavaByteArray

Java primitive array byte[]
extern class JavaCharArray

java $ JavaCharArray

Java primitive array char[]
extern class JavaDoubleArray

java $ JavaDoubleArray

Java primitive array double[]
extern class JavaFloatArray

java $ JavaFloatArray

Java primitive array float[]
extern class JavaIntArray

java $ JavaIntArray

Java primitive array int[]
extern class JavaLongArray

java $ JavaLongArray

Java primitive array long[]
extern class JavaShortArray

java $ JavaShortArray

Java primitive array short[]
package_diagram java::collections collections java::ffi_support ffi_support java::collections->java::ffi_support jvm jvm java::ffi_support->jvm ...jvm ... ...jvm->jvm java::java java java::java->java::collections android::platform platform android::platform->java::java android::platform... ... android::platform...->android::platform

Ancestors

module abstract_collection

core :: abstract_collection

Abstract collection classes and services.
module abstract_text

core :: abstract_text

Abstract class for manipulation of sequences of characters
module array

core :: array

This module introduces the standard array structure.
module bitset

core :: bitset

Services to handle BitSet
module bytes

core :: bytes

Services for byte streams and arrays
module circular_array

core :: circular_array

Efficient data structure to access both end of the sequence.
module codec_base

core :: codec_base

Base for codecs to use with streams
module codecs

core :: codecs

Group module for all codec-related manipulations
module collection

core :: collection

This module define several collection classes.
module core

core :: core

Standard classes and methods used by default by Nit programs and libraries.
module environ

core :: environ

Access to the environment variables of the process
module error

core :: error

Standard error-management infrastructure.
module exec

core :: exec

Invocation and management of operating system sub-processes.
module file

core :: file

File manipulations (create, read, write, etc.)
module fixed_ints

core :: fixed_ints

Basic integers of fixed-precision
module fixed_ints_text

core :: fixed_ints_text

Text services to complement fixed_ints
module flat

core :: flat

All the array-based text representations
module gc

core :: gc

Access to the Nit internal garbage collection mechanism
module hash_collection

core :: hash_collection

Introduce HashMap and HashSet.
module iso8859_1

core :: iso8859_1

Codec for ISO8859-1 I/O
module jvm

jvm :: jvm

Java Virtual Machine invocation API and others services from the JNI C API
module kernel

core :: kernel

Most basic classes and methods.
module list

core :: list

This module handle double linked lists
module math

core :: math

Mathematical operations
module native

core :: native

Native structures for text and bytes
module numeric

core :: numeric

Advanced services for Numeric types
module protocol

core :: protocol

module queue

core :: queue

Queuing data structures and wrappers
module range

core :: range

Module for range of discrete objects.
module re

core :: re

Regular expression support for all services based on Pattern
module ropes

core :: ropes

Tree-based representation of a String.
module sorter

core :: sorter

This module contains classes used to compare things and sorts arrays.
module stream

core :: stream

Input and output streams of characters
module text

core :: text

All the classes and methods related to the manipulation of text entities
module time

core :: time

Management of time and dates
module union_find

core :: union_find

union–find algorithm using an efficient disjoint-set data structure
module utf8

core :: utf8

Codec for UTF-8 I/O

Parents

module ffi_support

java :: ffi_support

Core supporting services for the FFI with Java

Children

module java

java :: java

Supporting services for the FFI with Java and to access Java libraries

Descendants

module a_star-m

a_star-m

module activities

android :: activities

Android Activities wrapper
module android

android :: android

Android services and implementation of app.nit
module android19

gamnit :: android19

Variation using features from Android API 19
module assets

android :: assets

Implementation of app::assets
module assets_and_resources

android :: assets_and_resources

Android Assets and Resources Management
module at_boot

android :: at_boot

Import this module to launch Service at device boot
module audio

android :: audio

Android audio services, wraps a part of android audio API
module bundle

android :: bundle

A mapping class of String to various value types used by the
module camera_control_android

gamnit :: camera_control_android

Two fingers camera manipulation, pinch to zoom and slide to scroll
module cardboard

gamnit :: cardboard

Update the orientation of world_camera at each frame using the head position given by android::cardboard
module cardboard

android :: cardboard

Services from the Google Cardboard SDK for virtual reality on Android
module dalvik

android :: dalvik

Java related services specific to Android and its Dalvik VM
module data_store

android :: data_store

Implements app::data_store using shared_preferences
module display_android

gamnit :: display_android

Gamnit display implementation for Android
module game

android :: game

Android services and implementation of app.nit for gamnit and mnit
module gamepad

android :: gamepad

Support for gamepad events (over Bluetooth or USB)
module gamnit_android

gamnit :: gamnit_android

Support services for Gamnit on Android
module http_request

android :: http_request

Android implementation of app:http_request
module input_events

android :: input_events

Pointer and hardware key events
module intent

android :: intent

Services allowing to launch activities and start/stop services using
module intent_api10

android :: intent_api10

Services allowing to launch activities and start/stop services using
module intent_api11

android :: intent_api11

Refines intent module to add API 11 services
module intent_api12

android :: intent_api12

Refines intent module to add API 12 services
module intent_api14

android :: intent_api14

Refines intent module to add API 14 services
module intent_api15

android :: intent_api15

Refines intent module to add API 15 services
module intent_api16

android :: intent_api16

Refines intent module to add API 16 services
module intent_api17

android :: intent_api17

Refines intent module to add API 17 services
module intent_api18

android :: intent_api18

Refines intent module to add API 18 services
module intent_api19

android :: intent_api19

Refines intent module to add API 19 services
module landscape

android :: landscape

Lock the application in the landscape orientation
module load_image

android :: load_image

Low-level services to load pixel data from the assets
module log

android :: log

Advanced Android logging services
module native_app_glue

android :: native_app_glue

Wrapper of the Android native_app_glue framework to implement app.nit
module native_notification

android :: native_notification

Native Java classes for notifications
module native_ui

android :: native_ui

Native services from the android.view and android.widget namespaces
module nit_activity

android :: nit_activity

Core implementation of app.nit on Android using a custom Java entry point
module notification

android :: notification

Services to show notification in the Android status bar
module platform

android :: platform

Triggers compilation for the android platform
module portrait

android :: portrait

Config to set the portrait orientation
module sensors

android :: sensors

Access Android sensors
module service

android :: service

Android service support for app.nit centered around the class Service
module shared_preferences

android :: shared_preferences

Services allowing to save and load datas to internal android device
module shared_preferences_api10

android :: shared_preferences_api10

Services to save/load data using android.content.SharedPreferences for the android platform
module shared_preferences_api11

android :: shared_preferences_api11

Refines shared_preferences module to add API 11 services
module toast

android :: toast

Services to display a toast, a small popup on Android
module ui

android :: ui

Views and services to use the Android native user interface
module ui_test

android :: ui_test

Test for app.nit's UI services
module vibration

android :: vibration

Vibration services for Android
module vr

gamnit :: vr

VR support for gamnit depth, for Android only
module wifi

android :: wifi

Simple wrapper of the Android WiFi services
# Basic Java collections
#
# ~~~
# var coll = new JavaArray(2)
#
# assert coll[0].is_java_null
# coll[0] = "zero".to_java_string
# coll[1] = "one".to_java_string
#
# assert coll.length == 2
# assert coll.first.to_s == "zero"
# assert coll[1].to_s == "one"
# assert [for e in coll do e.to_s] == ["zero", "one"]
# ~~~
module collections

import ffi_support

# Java primitive array
#
# These have fixed size so they offer the same services as `SequenceRead` and
# `[]=`, but would not support `Sequence::add`.
extern class AbstractJavaArray[E: Object]
	super SequenceRead[E]
	super JavaObject

	# Set the `value` at `key`
	fun []=(key: Int, value: E) is abstract

	redef fun iterator do return new JavaArrayIterator[E](self)

	redef fun reverse_iterator do return new JavaArrayReverseIterator[E](self)
end

# Java primitive array `int[]`
extern class JavaIntArray in "Java" `{ int[] `}
	super AbstractJavaArray[Int]

	# Get a new array of the given `size`
	new (size: Int) in "Java" `{ return new int[(int)size]; `}

	redef fun [](i) in "Java" `{ return self[(int)i]; `}

	redef fun []=(i, e) in "Java" `{ self[(int)i] = (int)e; `}

	redef fun length in "Java" `{ return self.length; `}
end

# Java primitive array `short[]`
extern class JavaShortArray in "Java" `{ short[] `}
	super AbstractJavaArray[Int]

	# Get a new array of the given `size`
	new (size: Int) in "Java" `{ return new short[(int)size]; `}

	redef fun [](i) in "Java" `{ return (short)self[(int)i]; `}

	redef fun []=(i, e) in "Java" `{ self[(int)i] = (short)e; `}

	redef fun length in "Java" `{ return self.length; `}
end

# Java primitive array `long[]`
extern class JavaLongArray in "Java" `{ long[] `}
	super AbstractJavaArray[Int]

	# Get a new array of the given `size`
	new (size: Int) in "Java" `{ return new long[(int)size]; `}

	redef fun [](i) in "Java" `{ return self[(int)i]; `}

	redef fun []=(i, e) in "Java" `{ self[(int)i] = (long)e; `}

	redef fun length in "Java" `{ return self.length; `}
end

# Java primitive array `float[]`
#
# Note that Nit `Float` is the size of a double, so storing them in a
# `JavaFloatArray` may lead to a loss of precision.
extern class JavaFloatArray in "Java" `{ float[] `}
	super AbstractJavaArray[Float]

	# Get a new array of the given `size`
	new(size: Int) in "Java" `{ return new float[(int)size]; `}

	redef fun [](i) in "Java" `{ return (double)self[(int)i]; `}

	redef fun []=(i, e) in "Java" `{ self[(int)i] = (float)e; `}

	redef fun length in "Java" `{ return self.length; `}
end

# Java primitive array `double[]`
extern class JavaDoubleArray in "Java" `{ double[] `}
	super AbstractJavaArray[Float]

	# Get a new array of the given `size`
	new(size: Int) in "Java" `{ return new double[(int)size]; `}

	redef fun [](i) in "Java" `{ return self[(int)i]; `}

	redef fun []=(i, e) in "Java" `{ self[(int)i] = (float)e; `}

	redef fun length in "Java" `{ return self.length; `}
end

# Java primitive array `Object[]`
extern class JavaArray in "Java" `{ java.lang.Object[] `}
	super AbstractJavaArray[JavaObject]

	# Get a new array of the given `size`
	new(size: Int) in "Java" `{ return new Object[(int)size]; `}

	redef fun [](i) in "Java" `{ return self[(int)i]; `}

	redef fun []=(i, e) in "Java" `{ self[(int)i] = e; `}

	redef fun length in "Java" `{ return self.length; `}
end

# Java primitive array `boolean[]`
extern class JavaBoolArray in "Java" `{ boolean[] `}
	super AbstractJavaArray[Bool]

	# Get a new array of the given `size`
	new (size: Int) in "Java" `{ return new boolean[(int)size]; `}

	redef fun [](i) in "Java" `{ return self[(int)i]; `}

	redef fun []=(i, e) in "Java" `{self[(int)i] = (boolean)e; `}

	redef fun length in "Java" `{ return self.length; `}
end

# Java primitive array `byte[]`
extern class JavaByteArray in "Java" `{ byte[] `}
	super AbstractJavaArray[Int]

	# Get a new array of the given `size`
	new (size: Int) in "Java" `{ return new byte[(int)size]; `}

	redef fun [](i) in "Java" `{ return (byte)self[(int)i]; `}

	redef fun []=(i, e) in "Java" `{ self[(int)i] = (byte)e; `}

	redef fun length in "Java" `{ return self.length; `}
end

# Java primitive array `char[]`
extern class JavaCharArray in "Java" `{ char[] `}
	super AbstractJavaArray[Char]

	# Get a new array of the given `size`
	new (size: Int) in "Java" `{ return new char[(int)size]; `}

	redef fun [](i) in "Java" `{ return (char)self[(int)i]; `}

	redef fun []=(i, e) in "Java" `{ self[(int)i] = (char)e; `}

	redef fun length in "Java" `{ return self.length; `}
end

# An `Iterator` on Java primitive arrays
private class JavaArrayIterator[E: Object]
	super IndexedIterator[E]

	var array: AbstractJavaArray[E]

	redef fun item do return array[index]

	redef fun is_ok do return index < array.length

	redef fun next do index += 1

	redef var index = 0
end

# A reverse `Iterator` on Java primitive arrays
private class JavaArrayReverseIterator[E: Object]
	super IndexedIterator[E]

	var array: AbstractJavaArray[E]

	redef fun item do return array[index]

	redef fun is_ok do return index >= 0

	redef fun next do index -= 1

	redef var index = array.length - 1
end
lib/java/collections.nit:15,1--206,3