Rumah  >  Artikel  >  Java  >  Apakah petua untuk menggunakan Jambu Jawa?

Apakah petua untuk menggunakan Jambu Jawa?

WBOY
WBOYke hadapan
2023-04-14 22:37:041445semak imbas

Pengenalan kepada Guava

Guava ialah perpustakaan sumber terbuka yang dikeluarkan oleh Google Ia terutamanya menyediakan beberapa kelas alat dan API yang sangat berguna dalam pembangunan Java, seperti pemprosesan rentetan, operasi set, pengaturcaraan berfungsi, caching, dll. .

Strings

Strings ialah satu set alatan rentetan yang disediakan oleh Guava, yang menyediakan banyak kaedah berguna untuk memproses rentetan. Berikut ialah kaedah utama Rentetan:

  • isNullOrEmpty(String string): Tentukan sama ada rentetan itu kosong atau nol.

  • padEnd(String string, int minLength, char padChar): Pad aksara yang ditentukan di hujung rentetan sehingga rentetan mencapai panjang yang ditentukan.

  • padStart(String string, int minLength, char padChar): Pad aksara yang ditentukan pada permulaan rentetan sehingga rentetan mencapai panjang yang ditentukan.

  • repeat(String string, int count): Ulang rentetan yang ditentukan beberapa kali tertentu.

  • commonPrefix(CharSequence a, CharSequence b): Dapatkan awalan biasa terpanjang bagi dua rentetan.

  • commonSuffix(CharSequence a, CharSequence b): Dapatkan akhiran sepunya terpanjang bagi dua rentetan.

Berikut ialah contoh penggunaan Strings:

public class StringsDemo {
    public static void main(String[] args) {
        // 判断字符串是否为空或null
        String str1 = null;
        String str2 = "";
        System.out.println(Strings.isNullOrEmpty(str1));
        System.out.println(Strings.isNullOrEmpty(str2));

        // 在字符串末尾填充指定字符,直到字符串达到指定长度
        String str3 = "abc";
        String paddedStr1 = Strings.padEnd(str3, 6, '*');
        System.out.println(paddedStr1);

        // 在字符串开头填充指定字符,直到字符串达到指定长度
        String str4 = "abc";
        String paddedStr2 = Strings.padStart(str4, 6, '*');
        System.out.println(paddedStr2);

        // 重复指定字符串指定次数
        String str5 = "abc";
        String repeatedStr = Strings.repeat(str5, 3);
        System.out.println(repeatedStr);

        // 获取两个字符串的最长公共前缀
        String str6 = "abcdefg";
        String str7 = "abcdxyz";
        String commonPrefix = Strings.commonPrefix(str6, str7);
        System.out.println(commonPrefix);

        // 获取两个字符串的最长公共后缀
        String str8 = "abcdefg";
        String str9 = "xyzdefg";
    String commonSuffix = Strings.commonSuffix(str8, str9);
    System.out.println(commonSuffix);
}

Koleksi (Koleksi)

Jambu jambu menyediakan beberapa API operasi pengumpulan yang sangat berguna di bawah:

1.ImmutableList

Koleksi tidak berubah ialah ciri penting Jambu Batu, yang boleh memastikan koleksi tidak diubah suai, sekali gus mengelakkan masalah akses serentak. ImmutabelList ialah pelaksanaan Senarai tidak boleh ubah Berikut ialah contoh kod:

List<String> list = Lists.newArrayList("a", "b", "c");
ImmutableList<String> immutableList = ImmutableList.copyOf(list);

2.Iterables

Kelas Iterables menyediakan beberapa kaedah berguna untuk mengendalikan koleksi, seperti yang ditunjukkan di bawah:

Iterable<String> iterable = Lists.newArrayList("a", "b", "c");

// 判断集合是否为空
boolean isEmpty = Iterables.isEmpty(iterable);

// 获取第一个元素,如果集合为空返回null
String first = Iterables.getFirst(iterable, null);

// 获取最后一个元素,如果集合为空返回null
String last = Iterables.getLast(iterable, null);

// 获取所有符合条件的元素
Iterable<String> filtered = Iterables.filter(iterable, new Predicate<String>() {
    @Override
    public boolean apply(String input) {
        return input.startsWith("a");
    }
});

// 转换集合类型
List<String> newList = Lists.newArrayList(Iterables.transform(iterable, new Function<String, String>() {
    @Override
    public String apply(String input) {
        return input + input;
    }
}));

3.Multimaps

Multimaps menyediakan struktur data yang sangat berguna yang membolehkan satu kunci sepadan dengan berbilang nilai Berikut ialah kod sampel:

ListMultimap<Integer, String> map = ArrayListMultimap.create();
map.put(1, "a");
map.put(1, "b");
map.put(2, "c");
List<String> values = map.get(1); // 返回[a, b]

4.Maps

Peta menyediakan beberapa kaedah berguna untuk mengendalikan Peta, seperti yang ditunjukkan di bawah:

Map<Integer, String> map = ImmutableMap.of(1, "a", 2, "b", 3, "c");

// 判断Map是否为空
boolean isEmpty = Maps.isEmpty(map);

// 获取Map中的所有键
Set<Integer> keys = map.keySet();

// 获取Map中的所有值
Collection<String> values = map.values();

// 获取Map中的所有键值对
Set<Map.Entry<Integer, String>> entries = map.entrySet();

// 根据键获取值,如果不存在则返回null
String value = Maps.getIfPresent(map, 1);

Semakan keadaan (Prasyarat)

Prasyarat ialah fungsi yang disediakan oleh alat semakan prasyarat Kumpulan Guava , yang menyediakan beberapa kaedah untuk menyemak sama ada parameter memenuhi jangkaan. Berikut ialah kaedah utama Prasyarat:

  • checkArgument(boolean expression, String errorMessageTemplate, Object... errorMessageArgs): Semak sama ada parameter memenuhi jangkaan dan buang IllegalArgumentException, yang boleh mengandungi templat mesej ralat dan ruang letak.

  • checkNotNull(T reference, String errorMessageTemplate, Object... errorMessageArgs): Semak sama ada parameter tersebut adalah batal dan buang NullPointerException Ia boleh mengandungi templat mesej ralat dan ruang letak.

  • checkState(boolean expression, String errorMessageTemplate, Object... errorMessageArgs): Menyemak sama ada keadaan objek seperti yang dijangkakan dan membuang IllegalStateException Ia boleh mengandungi templat mesej ralat dan ruang letak.

  • checkElementIndex(int index, int size, String errorMessageTemplate, Object... errorMessageArgs): Semak sama ada subskrip berada dalam julat koleksi dan buang pengecualian IndexOutOfBoundsException Ia boleh mengandungi templat mesej ralat dan ruang letak.

  • checkPositionIndex(int index, int size, String errorMessageTemplate, Object... errorMessageArgs): Semak sama ada subskrip berada dalam julat koleksi, yang boleh sama dengan saiz koleksi dan membuang pengecualian IndexOutOfBoundsException, yang boleh mengandungi mesej ralat templat dan ruang letak.

  • checkPositionIndexes(int start, int end, int size): Semak sama ada subskrip mula dan subskrip akhir berada dalam julat koleksi dan buang pengecualian IndexOutOfBoundsException.

Berikut ialah contoh penggunaan Prasyarat:

public class PreconditionsDemo {
    public static void main(String[] args) {
        // 检查参数是否符合预期,并抛出IllegalArgumentException异常,可以包含错误信息模板和占位符
        String str1 = "abc";
        Preconditions.checkArgument(str1.length() < 3, "字符串长度必须小于3");
        // 检查参数是否为null,并抛出NullPointerException异常,可以包含错误信息模板和占位符
        String str2 = null;
        Preconditions.checkNotNull(str2, "字符串不能为空");
        // 检查对象状态是否符合预期,并抛出IllegalStateException异常,可以包含错误信息模板和占位符
        boolean flag1 = false;
        Preconditions.checkState(flag1, "状态不正确");
        // 检查下标是否在集合的范围内,并抛出IndexOutOfBoundsException异常,可以包含错误信息模板和占位符
        List<Integer> list1 = Lists.newArrayList(1, 2, 3, 4, 5);
        Preconditions.checkElementIndex(6, list1.size(), "下标越界");
        // 检查下标是否在集合的范围内,可以等于集合的大小,并抛出IndexOutOfBoundsException异常,可以包含错误信息模板和占位符
        List<Integer> list2 = Lists.newArrayList(1, 2, 3, 4, 5);
        Preconditions.checkPositionIndex(5, list2.size(), "下标越界");
        // 检查开始下标和结束下标是否在集合的范围内,并抛出IndexOutOfBoundsException异常
        List<Integer> list3 = Lists.newArrayList(1, 2, 3, 4, 5);
        Preconditions.checkPositionIndexes(2, 6, list3.size());
        // 可以在错误信息中使用占位符
        int value1 = 101;
        Preconditions.checkArgument(value1 <= 100, "值必须小于等于 %s", 100);
        // 可以使用Supplier来避免计算开销
        int value2 = 101;
        Preconditions.checkArgument(value2 <= 100, () -> "值必须小于等于 " + 100);
}

Cache setempat (CacheBuilder) yang boleh menetapkan masa tamat tempoh

Cache ialah satu yang disediakan oleh kelas alat Cache Guava, yang boleh membantu kami menyimpan data dalam memori dan meningkatkan prestasi program. Berikut ialah kaedah utama Cache:

  • get(K key, Callabled1336e9e686742fb22c1860557381905 valueLoader): Dapatkan nilai cache bagi kunci yang ditentukan cache, panggil valueLoader untuk memuatkan data dan disimpan dalam cache.

  • getIfPresent(Objek kunci): Dapatkan nilai cache bagi kunci yang ditentukan Jika ia tiada dalam cache, kembalikan nol.

  • getAllPresent(Iterable6b3d0130bba23ae47fe2b8e8cddf0195 keys): Dapatkan nilai cache bagi kunci yang ditentukan Jika tiada nilai cache, kembalikan null.

  • put(kunci K, nilai V): Simpan nilai cache kunci yang ditentukan dalam cache.

  • putAll(Map90753ef5ffbd6c8060b28e347ac11071 m): Simpan nilai cache bagi Peta yang ditentukan dalam cache.

  • tidak sah(Kunci objek): Padamkan nilai cache kunci yang ditentukan daripada cache.

  • invalidateAll(Iterable6b3d0130bba23ae47fe2b8e8cddf0195 keys): Padamkan nilai cache bagi kunci yang ditentukan daripada cache.

  • invalidateAll(): Padamkan semua nilai cache dari cache.

  • size(): Dapatkan bilangan nilai cache dalam cache.

  • asMap(): Tukar cache kepada Map.

public class CacheDemo {
    public static void main(String[] args) {
        Cache<String, String> cache = CacheBuilder.newBuilder()
                .maximumSize(100)
                .expireAfterWrite(10, TimeUnit.MINUTES)
                .build();

        cache.put("key", "value");

        String value = cache.getIfPresent("key");
    }
}

Atas ialah kandungan terperinci Apakah petua untuk menggunakan Jambu Jawa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam