1 package net
.kezvh
.collections
;
3 import java
.lang
.reflect
.Array
;
4 import java
.util
.Arrays
;
5 import java
.util
.ListIterator
;
6 import java
.util
.NoSuchElementException
;
8 import net
.kezvh
.lang
.UtilityClassInstantiationException
;
9 import net
.kezvh
.text
.StringUtilities
;
15 public final class KezvhArrays
{
16 private KezvhArrays() {
17 throw new UtilityClassInstantiationException(KezvhArrays
.class);
20 private static final class ArrayIterator
<T
> extends AbstractListIterator
<T
> {
21 private final T
[] array
;
22 private int cursor
= 0;
23 private final int end
;
25 public ArrayIterator(final T
[] array
) {
26 this(array
, 0, 0, array
.length
);
29 public ArrayIterator(final T
[] array
, final int firstIndex
, final int startIndex
, final int lastIndex
) {
31 this.array
= Arrays
.copyOf(array
, array
.length
);
32 this.cursor
= firstIndex
;
37 protected void add0(final T e
) {
38 throw new UnsupportedOperationException();
42 protected T
findNext() throws NoSuchElementException
{
43 if (this.cursor
>= this.end
)
44 throw new NoSuchElementException();
45 return this.array
[this.cursor
++];
49 protected T
findPrevious() throws NoSuchElementException
{
51 throw new NoSuchElementException();
52 return this.array
[--this.cursor
];
56 protected void remove(final boolean previous
) {
57 throw new UnsupportedOperationException();
61 protected void set(final T e
, final boolean previous
) {
63 this.array
[this.cursor
] = e
;
65 this.array
[this.cursor
- 1] = e
;
71 * @param array COMMENT
74 public static <T
> ListIterator
<T
> getIterator(final T
[] array
) {
75 return new ArrayIterator
<T
>(array
);
79 * @param string COMMENT
82 public static int[] getInts(final String string
) {
83 final String
[] numbers
= StringUtilities
.getAllGroups("([0-9]+)", string
);
84 final int[] ints
= new int[numbers
.length
];
85 for (int i
= 0; i
< numbers
.length
; i
++)
86 ints
[i
] = Integer
.parseInt(numbers
[i
]);
92 * @param array COMMENT
94 public static <T
> void reverse(final T
[] array
) {
95 final int mid
= array
.length
/ 2;
96 for (int i
= 0, j
= array
.length
- 1; i
< mid
; i
++, j
--) {
97 final T tmp
= array
[i
];
104 * @param array COMMENT
106 public static void reverse(final long[] array
) {
107 final int mid
= array
.length
/ 2;
108 for (int i
= 0, j
= array
.length
- 1; i
< mid
; i
++, j
--) {
109 final long tmp
= array
[i
];
116 * @param array COMMENT
118 public static void reverse(final int[] array
) {
119 final int mid
= array
.length
/ 2;
120 for (int i
= 0, j
= array
.length
- 1; i
< mid
; i
++, j
--) {
121 final int tmp
= array
[i
];
128 * @param array COMMENT
130 public static void reverse(final short[] array
) {
131 final int mid
= array
.length
/ 2;
132 for (int i
= 0, j
= array
.length
- 1; i
< mid
; i
++, j
--) {
133 final short tmp
= array
[i
];
140 * @param array COMMENT
142 public static void reverse(final byte[] array
) {
143 final int mid
= array
.length
/ 2;
144 for (int i
= 0, j
= array
.length
- 1; i
< mid
; i
++, j
--) {
145 final byte tmp
= array
[i
];
152 * @param array COMMENT
154 public static void reverse(final boolean[] array
) {
155 final int mid
= array
.length
/ 2;
156 for (int i
= 0, j
= array
.length
- 1; i
< mid
; i
++, j
--) {
157 final boolean tmp
= array
[i
];
164 * @param array COMMENT
166 public static void reverse(final char[] array
) {
167 final int mid
= array
.length
/ 2;
168 for (int i
= 0, j
= array
.length
- 1; i
< mid
; i
++, j
--) {
169 final char tmp
= array
[i
];
176 * @param array COMMENT
178 public static void reverse(final float[] array
) {
179 final int mid
= array
.length
/ 2;
180 for (int i
= 0, j
= array
.length
- 1; i
< mid
; i
++, j
--) {
181 final float tmp
= array
[i
];
188 * @param array COMMENT
190 public static void reverse(final double[] array
) {
191 final int mid
= array
.length
/ 2;
192 for (int i
= 0, j
= array
.length
- 1; i
< mid
; i
++, j
--) {
193 final double tmp
= array
[i
];
205 @SuppressWarnings("unchecked")
206 public static <T
> T
[] nCopies(final int n
, final T o
) {
207 final T
[] copies
= (T
[]) Array
.newInstance(o
.getClass(), n
);
208 for (int i
= 0; i
< n
; i
++)
218 public static byte[] nCopies(final int n
, final byte b
) {
219 final byte[] copies
= new byte[n
];
220 for (int i
= 0; i
< n
; i
++)
230 public static short[] nCopies(final int n
, final short b
) {
231 final short[] copies
= new short[n
];
232 for (int i
= 0; i
< n
; i
++)
242 public static int[] nCopies(final int n
, final int b
) {
243 final int[] copies
= new int[n
];
244 for (int i
= 0; i
< n
; i
++)
254 public static long[] nCopies(final int n
, final long b
) {
255 final long[] copies
= new long[n
];
256 for (int i
= 0; i
< n
; i
++)
266 public static float[] nCopies(final int n
, final float b
) {
267 final float[] copies
= new float[n
];
268 for (int i
= 0; i
< n
; i
++)
278 public static double[] nCopies(final int n
, final double b
) {
279 final double[] copies
= new double[n
];
280 for (int i
= 0; i
< n
; i
++)
290 public static boolean[] nCopies(final int n
, final boolean b
) {
291 final boolean[] copies
= new boolean[n
];
292 for (int i
= 0; i
< n
; i
++)
302 public static char[] nCopies(final int n
, final char b
) {
303 final char[] copies
= new char[n
];
304 for (int i
= 0; i
< n
; i
++)
310 * @param array COMMENT
311 * @param element COMMENT
314 // ///////////////////////////////////////////////////////////
315 public static int indexOf(final int[] array
, final int element
) {
316 for (int i
= 0; i
< array
.length
; i
++)
317 if (array
[i
] == element
)
323 * @param array COMMENT
324 * @param element COMMENT
327 public static int indexOf(final long[] array
, final long element
) {
328 for (int i
= 0; i
< array
.length
; i
++)
329 if (array
[i
] == element
)
335 * @param array COMMENT
336 * @param element COMMENT
339 public static int indexOf(final short[] array
, final short element
) {
340 for (int i
= 0; i
< array
.length
; i
++)
341 if (array
[i
] == element
)
347 * @param array COMMENT
348 * @param element COMMENT
351 public static int indexOf(final byte[] array
, final byte element
) {
352 for (int i
= 0; i
< array
.length
; i
++)
353 if (array
[i
] == element
)
359 * @param array COMMENT
360 * @param element COMMENT
363 public static int indexOf(final float[] array
, final float element
) {
364 for (int i
= 0; i
< array
.length
; i
++)
365 if (array
[i
] == element
)
371 * @param array COMMENT
372 * @param element COMMENT
375 public static int indexOf(final double[] array
, final double element
) {
376 for (int i
= 0; i
< array
.length
; i
++)
377 if (array
[i
] == element
)
383 * @param array COMMENT
384 * @param element COMMENT
387 public static int indexOf(final boolean[] array
, final boolean element
) {
388 for (int i
= 0; i
< array
.length
; i
++)
389 if (array
[i
] == element
)
395 * @param array COMMENT
396 * @param element COMMENT
399 public static int indexOf(final char[] array
, final char element
) {
400 for (int i
= 0; i
< array
.length
; i
++)
401 if (array
[i
] == element
)
407 * @param array COMMENT
408 * @param element COMMENT
411 public static int indexOf(final Object
[] array
, final Object element
) {
412 for (int i
= 0; i
< array
.length
; i
++)
413 if (array
[i
].equals(element
))
418 // ///////////////////////////////////////////////////////////
421 * @param array COMMENT
422 * @param firstIndex COMMENT
423 * @param secondIndex COMMENT
425 public static void swap(final int[] array
, final int firstIndex
, final int secondIndex
) {
426 final int tmp
= array
[firstIndex
];
427 array
[firstIndex
] = array
[secondIndex
];
428 array
[secondIndex
] = tmp
;
432 * @param array COMMENT
433 * @param firstIndex COMMENT
434 * @param secondIndex COMMENT
436 public static void swap(final long[] array
, final int firstIndex
, final int secondIndex
) {
437 final long tmp
= array
[firstIndex
];
438 array
[firstIndex
] = array
[secondIndex
];
439 array
[secondIndex
] = tmp
;
443 * @param array COMMENT
444 * @param firstIndex COMMENT
445 * @param secondIndex COMMENT
447 public static void swap(final short[] array
, final int firstIndex
, final int secondIndex
) {
448 final short tmp
= array
[firstIndex
];
449 array
[firstIndex
] = array
[secondIndex
];
450 array
[secondIndex
] = tmp
;
454 * @param array COMMENT
455 * @param firstIndex COMMENT
456 * @param secondIndex COMMENT
458 public static void swap(final byte[] array
, final int firstIndex
, final int secondIndex
) {
459 final byte tmp
= array
[firstIndex
];
460 array
[firstIndex
] = array
[secondIndex
];
461 array
[secondIndex
] = tmp
;
465 * @param array COMMENT
466 * @param firstIndex COMMENT
467 * @param secondIndex COMMENT
469 public static void swap(final float[] array
, final int firstIndex
, final int secondIndex
) {
470 final float tmp
= array
[firstIndex
];
471 array
[firstIndex
] = array
[secondIndex
];
472 array
[secondIndex
] = tmp
;
476 * @param array COMMENT
477 * @param firstIndex COMMENT
478 * @param secondIndex COMMENT
480 public static void swap(final double[] array
, final int firstIndex
, final int secondIndex
) {
481 final double tmp
= array
[firstIndex
];
482 array
[firstIndex
] = array
[secondIndex
];
483 array
[secondIndex
] = tmp
;
487 * @param array COMMENT
488 * @param firstIndex COMMENT
489 * @param secondIndex COMMENT
491 public static void swap(final boolean[] array
, final int firstIndex
, final int secondIndex
) {
492 final boolean tmp
= array
[firstIndex
];
493 array
[firstIndex
] = array
[secondIndex
];
494 array
[secondIndex
] = tmp
;
498 * @param array COMMENT
499 * @param firstIndex COMMENT
500 * @param secondIndex COMMENT
502 public static void swap(final char[] array
, final int firstIndex
, final int secondIndex
) {
503 final char tmp
= array
[firstIndex
];
504 array
[firstIndex
] = array
[secondIndex
];
505 array
[secondIndex
] = tmp
;
509 * @param array COMMENT
510 * @param firstIndex COMMENT
511 * @param secondIndex COMMENT
513 public static void swap(final Object
[] array
, final int firstIndex
, final int secondIndex
) {
514 final Object tmp
= array
[firstIndex
];
515 array
[firstIndex
] = array
[secondIndex
];
516 array
[secondIndex
] = tmp
;
519 // ///////////////////////////////////////////////////////////
522 * @param array COMMENT
523 * @param element COMMENT
526 public static int[] insert(final int[] array
, final int element
) {
527 return KezvhArrays
.insert(array
, 0, element
);
531 * @param array COMMENT
532 * @param index COMMENT
533 * @param element COMMENT
536 public static int[] insert(final int[] array
, final int index
, final int element
) {
537 final int[] newArray
= new int[array
.length
+ 1];
539 System
.arraycopy(array
, 0, newArray
, 0, index
);
540 newArray
[index
] = element
;
541 if (index
!= array
.length
)
542 System
.arraycopy(array
, index
, newArray
, index
+ 1, array
.length
- index
);
547 * @param array COMMENT
548 * @param element COMMENT
551 public static long[] insert(final long[] array
, final long element
) {
552 return KezvhArrays
.insert(array
, 0, element
);
556 * @param array COMMENT
557 * @param index COMMENT
558 * @param element COMMENT
561 public static long[] insert(final long[] array
, final int index
, final long element
) {
562 final long[] newArray
= new long[array
.length
+ 1];
564 System
.arraycopy(array
, 0, newArray
, 0, index
);
565 newArray
[index
] = element
;
566 if (index
!= array
.length
)
567 System
.arraycopy(array
, index
, newArray
, index
+ 1, array
.length
- index
);
572 * @param array COMMENT
573 * @param element COMMENT
576 public static short[] insert(final short[] array
, final short element
) {
577 return KezvhArrays
.insert(array
, 0, element
);
581 * @param array COMMENT
582 * @param index COMMENT
583 * @param element COMMENT
586 public static short[] insert(final short[] array
, final int index
, final short element
) {
587 final short[] newArray
= new short[array
.length
+ 1];
589 System
.arraycopy(array
, 0, newArray
, 0, index
);
590 newArray
[index
] = element
;
591 if (index
!= array
.length
)
592 System
.arraycopy(array
, index
, newArray
, index
+ 1, array
.length
- index
);
597 * @param array COMMENT
598 * @param element COMMENT
601 public static byte[] insert(final byte[] array
, final byte element
) {
602 return KezvhArrays
.insert(array
, 0, element
);
606 * @param array COMMENT
607 * @param index COMMENT
608 * @param element COMMENT
611 public static byte[] insert(final byte[] array
, final int index
, final byte element
) {
612 final byte[] newArray
= new byte[array
.length
+ 1];
614 System
.arraycopy(array
, 0, newArray
, 0, index
);
615 newArray
[index
] = element
;
616 if (index
!= array
.length
)
617 System
.arraycopy(array
, index
, newArray
, index
+ 1, array
.length
- index
);
622 * @param array COMMENT
623 * @param element COMMENT
626 public static float[] insert(final float[] array
, final float element
) {
627 return KezvhArrays
.insert(array
, 0, element
);
631 * @param array COMMENT
632 * @param index COMMENT
633 * @param element COMMENT
636 public static float[] insert(final float[] array
, final int index
, final float element
) {
637 final float[] newArray
= new float[array
.length
+ 1];
639 System
.arraycopy(array
, 0, newArray
, 0, index
);
640 newArray
[index
] = element
;
641 if (index
!= array
.length
)
642 System
.arraycopy(array
, index
, newArray
, index
+ 1, array
.length
- index
);
647 * @param array COMMENT
648 * @param element COMMENT
651 public static double[] insert(final double[] array
, final double element
) {
652 return KezvhArrays
.insert(array
, 0, element
);
656 * @param array COMMENT
657 * @param index COMMENT
658 * @param element COMMENT
661 public static double[] insert(final double[] array
, final int index
, final double element
) {
662 final double[] newArray
= new double[array
.length
+ 1];
664 System
.arraycopy(array
, 0, newArray
, 0, index
);
665 newArray
[index
] = element
;
666 if (index
!= array
.length
)
667 System
.arraycopy(array
, index
, newArray
, index
+ 1, array
.length
- index
);
672 * @param array COMMENT
673 * @param element COMMENT
676 public static boolean[] insert(final boolean[] array
, final boolean element
) {
677 return KezvhArrays
.insert(array
, 0, element
);
681 * @param array COMMENT
682 * @param index COMMENT
683 * @param element COMMENT
686 public static boolean[] insert(final boolean[] array
, final int index
, final boolean element
) {
687 final boolean[] newArray
= new boolean[array
.length
+ 1];
689 System
.arraycopy(array
, 0, newArray
, 0, index
);
690 newArray
[index
] = element
;
691 if (index
!= array
.length
)
692 System
.arraycopy(array
, index
, newArray
, index
+ 1, array
.length
- index
);
697 * @param array COMMENT
698 * @param element COMMENT
701 public static char[] insert(final char[] array
, final char element
) {
702 return KezvhArrays
.insert(array
, 0, element
);
706 * @param array COMMENT
707 * @param index COMMENT
708 * @param element COMMENT
711 public static char[] insert(final char[] array
, final int index
, final char element
) {
712 final char[] newArray
= new char[array
.length
+ 1];
714 System
.arraycopy(array
, 0, newArray
, 0, index
);
715 newArray
[index
] = element
;
716 if (index
!= array
.length
)
717 System
.arraycopy(array
, index
, newArray
, index
+ 1, array
.length
- index
);
723 * @param array COMMENT
724 * @param element COMMENT
727 public static <T
> T
[] insert(final T
[] array
, final T element
) {
728 return KezvhArrays
.insert(array
, 0, element
);
733 * @param array COMMENT
734 * @param index COMMENT
735 * @param element COMMENT
738 @SuppressWarnings("unchecked")
739 public static <T
> T
[] insert(final T
[] array
, final int index
, final T element
) {
740 final T
[] newArray
= (T
[]) Array
.newInstance(array
.getClass().getComponentType(), array
.length
+ 1);
742 System
.arraycopy(array
, 0, newArray
, 0, index
);
743 newArray
[index
] = element
;
744 if (index
!= array
.length
)
745 System
.arraycopy(array
, index
, newArray
, index
+ 1, array
.length
- index
);
750 * @param array COMMENT
751 * @param object COMMENT
754 public static Object
[] add(final Object
[] array
, final Object object
) {
757 concat
= (Object
[]) Array
.newInstance(object
.getClass(), 1);
760 final int newSize
= array
.length
+ 1;
761 concat
= (Object
[]) Array
.newInstance(array
.getClass().getComponentType(), newSize
);
763 System
.arraycopy(array
, 0, concat
, 0, array
.length
);
764 concat
[array
.length
] = object
;
770 * @param array COMMENT
774 public static int[] add(final int[] array
, final int n
) {
776 return new int[] { n
};
777 final int[] concat
= new int[array
.length
+ 1];
778 System
.arraycopy(array
, 0, concat
, 0, array
.length
);
779 concat
[array
.length
] = n
;
784 * @param array COMMENT
788 public static int[] remove(final int[] array
, final int n
) {
791 final int[] concat
= new int[array
.length
+ 1];
792 System
.arraycopy(array
, 0, concat
, 0, array
.length
);
793 concat
[array
.length
] = n
;
798 * @param array COMMENT
799 * @param toAppend COMMENT
802 public static int[] addAll(final int[] array
, final int[] toAppend
) {
803 final int[] concat
= new int[array
.length
+ toAppend
.length
];
804 System
.arraycopy(array
, 0, concat
, 0, array
.length
);
805 System
.arraycopy(toAppend
, 0, concat
, array
.length
, toAppend
.length
);
809 // //////////////////////////////////////
812 * @param values COMMENT
813 * @param value COMMENT
816 public static boolean contains(final int values
[], final int value
) {
817 for (final int element
: values
)
818 if (element
== value
)
825 * @param values COMMENT
826 * @param value COMMENT
829 public static boolean contains(final long values
[], final long value
) {
830 for (final long element
: values
)
831 if (element
== value
)
838 * @param values COMMENT
839 * @param value COMMENT
842 public static boolean contains(final short values
[], final short value
) {
843 for (final short element
: values
)
844 if (element
== value
)
851 * @param values COMMENT
852 * @param value COMMENT
855 public static boolean contains(final byte values
[], final byte value
) {
856 for (final byte element
: values
)
857 if (element
== value
)
864 * @param values COMMENT
865 * @param value COMMENT
868 public static boolean contains(final float values
[], final float value
) {
869 for (final float element
: values
)
870 if (element
== value
)
877 * @param values COMMENT
878 * @param value COMMENT
881 public static boolean contains(final double values
[], final double value
) {
882 for (final double element
: values
)
883 if (element
== value
)
889 // ///////////////////////////////////
892 * @param array COMMENT
893 * @param indicies COMMENT
896 public static int[] slice(final int[] array
, final int[] indicies
) {
897 final int[] values
= new int[indicies
.length
];
898 for (int i
= 0; i
< indicies
.length
; i
++)
899 values
[i
] = array
[indicies
[i
]];
904 * @param array COMMENT
905 * @param indicies COMMENT
908 public static long[] slice(final long[] array
, final int[] indicies
) {
909 final long[] values
= new long[indicies
.length
];
910 for (int i
= 0; i
< indicies
.length
; i
++)
911 values
[i
] = array
[indicies
[i
]];
916 * @param array COMMENT
917 * @param indicies COMMENT
920 public static float[] slice(final float[] array
, final int[] indicies
) {
921 final float[] values
= new float[indicies
.length
];
922 for (int i
= 0; i
< indicies
.length
; i
++)
923 values
[i
] = array
[indicies
[i
]];
928 * @param array COMMENT
929 * @param indicies COMMENT
932 public static double[] slice(final double[] array
, final int[] indicies
) {
933 final double[] values
= new double[indicies
.length
];
934 for (int i
= 0; i
< indicies
.length
; i
++)
935 values
[i
] = array
[indicies
[i
]];
940 * @param array COMMENT
941 * @param indicies COMMENT
944 public static byte[] slice(final byte[] array
, final int[] indicies
) {
945 final byte[] values
= new byte[indicies
.length
];
946 for (int i
= 0; i
< indicies
.length
; i
++)
947 values
[i
] = array
[indicies
[i
]];
952 * @param array COMMENT
953 * @param indicies COMMENT
956 public static short[] slice(final short[] array
, final int[] indicies
) {
957 final short[] values
= new short[indicies
.length
];
958 for (int i
= 0; i
< indicies
.length
; i
++)
959 values
[i
] = array
[indicies
[i
]];
964 * @param array COMMENT
965 * @param indicies COMMENT
968 public static char[] slice(final char[] array
, final int[] indicies
) {
969 final char[] values
= new char[indicies
.length
];
970 for (int i
= 0; i
< indicies
.length
; i
++)
971 values
[i
] = array
[indicies
[i
]];
976 * @param array COMMENT
977 * @param indicies COMMENT
980 public static boolean[] slice(final boolean[] array
, final int[] indicies
) {
981 final boolean[] values
= new boolean[indicies
.length
];
982 for (int i
= 0; i
< indicies
.length
; i
++)
983 values
[i
] = array
[indicies
[i
]];
988 * @param array COMMENT
989 * @param indicies COMMENT
992 public static Object
[] slice(final Object
[] array
, final int[] indicies
) {
993 final Object
[] values
= new Object
[indicies
.length
];
994 for (int i
= 0; i
< indicies
.length
; i
++)
995 values
[i
] = array
[indicies
[i
]];
999 // ///////////////////////////////
1002 * @param array COMMENT
1005 public static Integer
[] toObjects(final int[] array
) {
1006 final Integer
[] objects
= new Integer
[array
.length
];
1008 for (int i
= 0; i
< array
.length
; i
++)
1009 objects
[i
] = Integer
.valueOf(array
[i
]);
1015 * @param array COMMENT
1018 public static Long
[] toObjects(final long[] array
) {
1019 final Long
[] objects
= new Long
[array
.length
];
1021 for (int i
= 0; i
< array
.length
; i
++)
1022 objects
[i
] = Long
.valueOf(array
[i
]);
1028 * @param array COMMENT
1031 public static Float
[] toObjects(final float[] array
) {
1032 final Float
[] objects
= new Float
[array
.length
];
1034 for (int i
= 0; i
< array
.length
; i
++)
1035 objects
[i
] = Float
.valueOf(array
[i
]);
1041 * @param array COMMENT
1044 public static Double
[] toObjects(final double[] array
) {
1045 final Double
[] objects
= new Double
[array
.length
];
1047 for (int i
= 0; i
< array
.length
; i
++)
1048 objects
[i
] = Double
.valueOf(array
[i
]);
1054 * @param array COMMENT
1057 public static Byte
[] toObjects(final byte[] array
) {
1058 final Byte
[] objects
= new Byte
[array
.length
];
1060 for (int i
= 0; i
< array
.length
; i
++)
1061 objects
[i
] = Byte
.valueOf(array
[i
]);
1067 * @param array COMMENT
1070 public static Short
[] toObjects(final short[] array
) {
1071 final Short
[] objects
= new Short
[array
.length
];
1073 for (int i
= 0; i
< array
.length
; i
++)
1074 objects
[i
] = Short
.valueOf(array
[i
]);
1080 * @param array COMMENT
1083 public static Boolean
[] toObjects(final boolean[] array
) {
1084 final Boolean
[] objects
= new Boolean
[array
.length
];
1086 for (int i
= 0; i
< array
.length
; i
++)
1087 objects
[i
] = Boolean
.valueOf(array
[i
]);
1093 * @param array COMMENT
1096 public static Character
[] toObjects(final char[] array
) {
1097 final Character
[] objects
= new Character
[array
.length
];
1099 for (int i
= 0; i
< array
.length
; i
++)
1100 objects
[i
] = Character
.valueOf(array
[i
]);
1105 // ////////////////////////////////
1108 * @param array COMMENT
1111 public static int[] toPrimatives(final Integer
[] array
) {
1112 final int[] objects
= new int[array
.length
];
1114 for (int i
= 0; i
< array
.length
; i
++)
1115 objects
[i
] = array
[i
].intValue();
1121 * @param array COMMENT
1124 public static long[] toPrimatives(final Long
[] array
) {
1125 final long[] objects
= new long[array
.length
];
1127 for (int i
= 0; i
< array
.length
; i
++)
1128 objects
[i
] = array
[i
].longValue();
1134 * @param array COMMENT
1137 public static short[] toPrimatives(final Short
[] array
) {
1138 final short[] objects
= new short[array
.length
];
1140 for (int i
= 0; i
< array
.length
; i
++)
1141 objects
[i
] = array
[i
].shortValue();
1147 * @param array COMMENT
1150 public static byte[] toPrimatives(final Byte
[] array
) {
1151 final byte[] objects
= new byte[array
.length
];
1153 for (int i
= 0; i
< array
.length
; i
++)
1154 objects
[i
] = array
[i
].byteValue();
1160 * @param array COMMENT
1163 public static char[] toPrimatives(final Character
[] array
) {
1164 final char[] objects
= new char[array
.length
];
1166 for (int i
= 0; i
< array
.length
; i
++)
1167 objects
[i
] = array
[i
].charValue();
1173 * @param array COMMENT
1176 public static boolean[] toPrimatives(final Boolean
[] array
) {
1177 final boolean[] objects
= new boolean[array
.length
];
1179 for (int i
= 0; i
< array
.length
; i
++)
1180 objects
[i
] = array
[i
].booleanValue();
1186 * @param array COMMENT
1189 public static float[] toPrimatives(final Float
[] array
) {
1190 final float[] objects
= new float[array
.length
];
1192 for (int i
= 0; i
< array
.length
; i
++)
1193 objects
[i
] = array
[i
].floatValue();
1199 * @param array COMMENT
1202 public static double[] toPrimatives(final Double
[] array
) {
1203 final double[] objects
= new double[array
.length
];
1205 for (int i
= 0; i
< array
.length
; i
++)
1206 objects
[i
] = array
[i
].doubleValue();
1212 * is actually instance of morphism.anamorphism
1213 * @param start FIXME comment
1214 * @param end FIXME comment
1217 public static char[] range(final char start
, final char end
) {
1219 throw new IllegalArgumentException("end character '" + end
+ "' is lexically before start char '" + start
+ "'");
1220 final char[] range
= new char[end
- start
];
1222 char current
= start
;
1223 while (i
< range
.length
)
1224 range
[i
++] = current
++;
1230 * is actually a catamorpishm (fold)
1231 * @param arrays FIXME comment
1232 * @return concatenation
1234 public static char[] toArray(final char[]... arrays
) {
1236 for (final char[] element
: arrays
)
1237 size
+= element
.length
;
1239 final char[] array
= new char[size
];
1241 for (int i
= 0, j
= 0; i
< size
; j
++, i
+= arrays
[i
].length
)
1242 System
.arraycopy(arrays
[j
], i
, array
, 0, arrays
[j
].length
);
1248 * is actually instance of morphism.anamorphism
1249 * @param start FIXME comment
1250 * @param end FIXME comment
1253 public static int[] range(final int start
, final int end
) {
1255 throw new IllegalArgumentException("end character '" + end
+ "' is lexically before start char '" + start
+ "'");
1256 final int[] range
= new int[end
- start
];
1258 int current
= start
;
1259 while (i
< range
.length
)
1260 range
[i
++] = current
++;
1266 * is actually a catamorpishm (fold)
1267 * @param arrays FIXME comment
1268 * @return concatenation
1270 public static int[] toArray(final int[]... arrays
) {
1272 for (final int[] element
: arrays
)
1273 size
+= element
.length
;
1275 final int[] array
= new int[size
];
1277 for (int i
= 0, j
= 0; i
< size
; j
++, i
+= arrays
[i
].length
)
1278 System
.arraycopy(arrays
[j
], i
, array
, 0, arrays
[j
].length
);
1284 * @param <T> COMMENT
1285 * @param clazz COMMENT
1286 * @param length COMMENT
1289 @SuppressWarnings("unchecked")
1290 public static <T
> T
[] createArray(final Class
<?
> clazz
, final int length
) {
1291 return (T
[]) Array
.newInstance(clazz
, length
);