Guavaのcom.google.common.primitives.Longs
の利用サンプルです。
Longsクラスはlong型の値に対するユーティリティメソッドなどを提供しています。
サンプルコードで試したのは以下の通りです。
long配列 ⇒ List<Long> の変換
■API
Longs#asList
■サンプル
long[] srcArray = new long[] { 1L, 2L, 3L, 5L }; List<Long> destList = Longs.asList(srcArray); System.out.println("destList : " + destList); // ちなみに long[] ⇒ List<Long> の変換はArrays.asList ではできない // List<Long> bList = Arrays.asList(srcArray); ← コンパイルエラー
■実行結果
destList : [1, 2, 3, 5]
LongのCollection ⇒ long配列 の変換
■API
Longs#toArray
■サンプル
List<Long> srcList = Longs.asList(1L, 1L, 10L, 100L); long[] destArray1 = Longs.toArray(srcList); System.out.println("destArray1 : " + Arrays.toString(destArray1)); // ちなみに List<Long> ⇒ long[] の変換はCollection.toArray ではできない // long[] array = (long[]) srcList.toArray(new long[srcList.size()]); ← コンパイルエラー
■実行結果
destArray1 : [1, 1, 10, 100]
複数のlong配列を結合して一つのlong配列にする
■API
Longs#concat
■サンプル
long[] srcArray1 = new long[] { 1L, 2L }; long[] srcArray2 = new long[] { 1000L, 2000L }; long[] destArray2 = Longs.concat(srcArray1, srcArray2); System.out.println("destArray2 : " + Arrays.toString(destArray2));
■実行結果
destArray2 : [1, 2, 1000, 2000]
long配列の各要素を指定した区切り文字列で連結
■API
Longs#join
■サンプル
long[] srcArray3 = new long[] { 2013L, 4L, 10L }; String joinedStr = Longs.join("/", srcArray3); System.out.println("joinedStr : " + joinedStr);
■実行結果
joinedStr : 2013/4/10
long配列の中の最大値、最小値を取得
■API
Longs#max
Longs#min
■サンプル
long[] array1 = new long[] { 10L, 11L, 12L, 5L, 1L, 100L, 200L, 300L }; System.out.println(Arrays.toString(array1) + " max -> " + Longs.max(array1)); System.out.println(Arrays.toString(array1) + " min -> " + Longs.min(array1));
■実行結果
[10, 11, 12, 5, 1, 100, 200, 300] max -> 300 [10, 11, 12, 5, 1, 100, 200, 300] min -> 1
long配列の中の指定の値を含むかどうか
■API
Longs#contains
■サンプル
long[] array2 = new long[] { 10L, 11L, 12L, 5L, 1L, 100L, 200L, 300L }; System.out.println(Arrays.toString(array2) + " contains 5 -> " + Longs.contains(array2, 5L)); System.out.println(Arrays.toString(array2) + " contains 0 -> " + Longs.contains(array2, 0L));
■実行結果
[10, 11, 12, 5, 1, 100, 200, 300] contains 5 -> true [10, 11, 12, 5, 1, 100, 200, 300] contains 0 -> false
long型の値の比較
■API
Longs#compare
■サンプル
System.out.println("1 compare 2 -> " + Longs.compare(1L, 2L)); System.out.println("2 compare 1 -> " + Longs.compare(2L, 1L)); System.out.println("1 compare 1 -> " + Longs.compare(1L, 1L));
■実行結果
1 compare 2 -> -1 2 compare 1 -> 1 1 compare 1 -> 0
試したソースコードの全体は以下です。
import com.google.common.primitives.Longs; import java.util.Arrays; import java.util.List; public class LongsClient { public static void main(String[] args) { // long[] ⇒ List<Long> の変換 System.out.println("### Longs.asList execute"); long[] srcArray = new long[] { 1L, 2L, 3L, 5L }; List<Long> destList = Longs.asList(srcArray); System.out.println("destList : " + destList); // long[] ⇒ List<Long> の変換はArrays.asListではできない // List<Long> bList = Arrays.asList(srcArray); ← コンパイルエラー // LongのCollection ⇒ long[] の変換 System.out.println("### Longs.toArray execute"); List<Long> srcList = Longs.asList(1L, 1L, 10L, 100L); long[] destArray1 = Longs.toArray(srcList); System.out.println("destArray1 : " + Arrays.toString(destArray1)); // List<Long> ⇒ long[] の変換はCollection.toArrayではできない // long[] array = (long[]) srcList.toArray(new long[srcList.size()]); ← コンパイルエラー // 複数のlong配列を結合して一つのlong配列にする System.out.println("### Longs.concat execute"); long[] srcArray1 = new long[] { 1L, 2L }; long[] srcArray2 = new long[] { 1000L, 2000L }; long[] destArray2 = Longs.concat(srcArray1, srcArray2); System.out.println("destArray2 : " + Arrays.toString(destArray2)); // long配列の各要素を指定した区切り文字列で連結した文字列を取得 System.out.println("### Longs.join execute"); long[] srcArray3 = new long[] { 2013L, 4L, 10L }; String joinedStr = Longs.join("/", srcArray3); System.out.println("joinedStr : " + joinedStr); // long配列の中の最大値、最小値を取得 System.out.println("### Longs.max,min execute"); long[] array1 = new long[] { 10L, 11L, 12L, 5L, 1L, 100L, 200L, 300L }; System.out.println(Arrays.toString(array1) + " max -> " + Longs.max(array1)); System.out.println(Arrays.toString(array1) + " min -> " + Longs.min(array1)); // long配列の中の指定の値を含むかどうかを取得 System.out.println("### Longs.contains execute"); long[] array2 = new long[] { 10L, 11L, 12L, 5L, 1L, 100L, 200L, 300L }; System.out.println(Arrays.toString(array2) + " contains 5 -> " + Longs.contains(array2, 5L)); System.out.println(Arrays.toString(array2) + " contains 0 -> " + Longs.contains(array2, 0L)); // long型の値の比較(compare) System.out.println("### Longs.compare execute"); System.out.println("1 compare 2 -> " + Longs.compare(1L, 2L)); System.out.println("2 compare 1 -> " + Longs.compare(2L, 1L)); System.out.println("1 compare 1 -> " + Longs.compare(1L, 1L)); } }