Com google common collect Lists maven
Google Guava cung cấp các thư viện tiện lợi giúp giảm thiểu code trong quá trình phát triển ứng dụng. Trong bài viết này, chúng ta sẽ cùng nhau tìm hiểu Guava thông qua bản release 28.2-jre. Show Maven dependencyĐể sử dụng Goole Guava trong project maven chúng ta cần thêm dependency sau: Các bạn có thể tìm thấy các phiên bản mới hơn tại Google Guave Maven. commom.base PackageCharMatcherCharMatcher class được sử dụng để kiểm tra một string theo các yêu cầu cụ thể. Ví dụ kiểm tra string chỉ chứa ký tự và số. boolean result1 = CharMatcher.javaLetterOrDigit().matchesAllOf("someString789"); //TRUE boolean result2 = CharMatcher.javaLetterOrDigit().matchesAllOf("[emailprotected]"); // FALSEHoặc chúng ta có thể đếm số lượng ký số hoặc ký tư trong 1 string như thế này String number = "8 123 456 123"; int result = CharMatcher.digit().countIn(number); // 10 String text = "shareprogramming.net"; int numberText = CharMatcher.javaLetter().countIn(text); //19Kiểm tra vị trí của 1 ký tự trong string ThrowablesThrowables class cung cấp các method xử lý khi có các exception xảy ra. Ví dụ sử dụng lazyStackTrace() để lấy các phần tử trong stacktrace khi có 1 exception được ném ra. import com.google.common.base.Throwables; import org.apache.commons.lang3.concurrent.ConcurrentException; import java.lang.reflect.InvocationTargetException; import java.util.List; class test { public static void main(String[] agrs) { try { test(); } catch (Exception e) { Listcommom.collect PackageFluentIterable.toMultiset()FluentIterable.toMultiSet() dùng để chuyển một mảng sang một ImmutableMultiSet (implement của MultiSet interface). User[] usersArray = {new User(1L, "John", 45), new User(2L, "Max", 15)}; ImmutableMultisetMột MultiSet là một collection tương tự như Set, điểm khác biệt lớn nhất giữa chúng là Mutiset có thể chứa các phần tử trùng lặp, tuy nhiên chúng ta có thể lấy một dữ liệu duy nhất thông qua elementSet(). class test { public static void main(String[] agrs) { ListRangeSetRangeSet được sử dụng để thao tác trên khoảng giá trị liên tiếp như khoảng (a, z] hoặc [1, 10]. Các instance của RangSet cũng có tính chất tương tự trong các phép toán học như phép giao, phép hợp etc. RangSet cung cấp các method để tạo khoảng giá trị: closed(), openClosed(), closedOpen(), open(). Trong đó open nghĩa là không lấy giá trị biên, còn closed lấy luôn giá trị biên. open() và closed() method sẽ áp dụng cho cả 2 biên dưới và trên. Lưu ý nếu khoảng giá trị không hợp lệ sẽ bị ném IllegalArgumentException. Ví dụ tạo khoảng giá trị [1, 10] ( lấy giá trị biên ở cả 2 đầu) RangeSetNếu thêm vào khoảng [5, 15) thì 2 khoảng [1, 10] và [5, 15) sẽ giao lại thành [1, 15). Giờ đây, chúng ta có thể kiểm tra các giá trị đơn xem có chứa trong RangeSet hay không với contains() method. boolean isContains15 = rangeSet.contains(15); // FALSE boolean isContains5 = rangeSet.contains(5); // TRUEHoặc có thể kiểm tra một khoảng giá trị chứa trong một khoảng giá khác với encloses() method. boolean isContainsRang1_3 = rangeSet.encloses(Range.closed(1, 3)); // TRUE boolean isContainsRang1_17 = rangeSet.encloses(Range.closed(1, 17)); // FALSENgoài ra còn 1 số method giúp tạo một khoảng giá từ giá trị được chỉ định đến ± như: Range.greaterThan(),Range.lessThan(),Range.atLeast(),Range.atMost(). Ví dụ tạo khoảng giá trị từ (10 +]. rangeSet.add(Range.greaterThan(10));Hoặc [10, +] rangeSet.add(Range.atLeast(10));common.hash packageHashing.sha384()Hashing.sha384() method trả về 1 method triển khai thuật toán SHA-384 algorithm: int inputData = 15; HashFunction hashFunction = Hashing.sha384(); HashCode hashCode = hashFunction.hashInt(inputData); System.out.println(hashCode.toString());
commom.reflect packageTypeToken.isSubtypeOfTypeToken được sử dụng để truy vấn kiểu dữ liệu generics tại thời điểm runtime. Java sẽ không lưu trữ thông tin về generic type tại thời điểm runtime. TypeToken được xem như cứu cánh cho phép chúng ta truy vấn và làm việc với các generic type mà không cần tốn công mở rộng mã nguồn. Ví dụ, chúng ta có ArrayList Như vậy, với isAssignableFrom()method chúng ta sẽ có các thông tin sai lệnh, để giải quyết vấn đề này google guava cung cấp TypeToken dùng như là một wrapper class bao ngoài các class cần kiểm tra generic type tại thời điểm runtime. TypeTokenNgoài ra chúng ta cũng có thể sử dụng isSubtypeOf(TypeToken) để kiểm tra một class có phải là một subclass của class kia hay không? TypeToken
commom.io packageByteSource.sizeIfKnown()Method này trả về số lượng byte của file mà không cần mở một data stream. ByteSource charSource = Files.asByteSource(new File("your_path")); OptionalTóm lượcGoogle Guava là một trong những thư viện Java phổ biến được rất nhiều các developer sử dụng vì tính đơn giản, nhanh gọn mà không cần phải code nhiều như xưa nữa. Tuy nhiên đối với các bạn mới học Java thì nên code chay đi nhé, sau này hẳn dùng Prev Article
Next Article
|