読者です 読者をやめる 読者になる 読者になる

覚えたら書く

IT関係のデベロッパとして日々覚えたことを書き残したいです。 twitter: @yyoshikaw

com.google.common.primitives.Longs

Guava Java

Guavacom.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));
    }
}