TimTim

سایت خبر خوان

معرفی Google Guava

جمعه 24 اسفند 97 | 01:40 - virgool.io - 3
در حقیقت Guava یک لایبرری هستش که توسط کمپانی گوگل توسعه داده شده...

در حقیقت Guava یک لایبرری هستش که توسط کمپانی گوگل توسعه داده شده و هدف اون پیاده سازی کلی Util و best practice هایی برای بهینه سازی کدهای جاوا هستش . Guava موارد خیلی زیادی رو پیاده سازی کرده ، مثل collection type های جدید ، کلاس های جدیدی برای String ها، Optional و... تا بتونیم به وسیله اون بهینه تر کد جاوا بنویسیم .

به نظر خود من guava حتی نسبت به خود جاوا خیلی جلوتر هستش و پیاده سازی هایی رو که ارائه داده ، بعدها جاوا توی ورژن های جدیدش اون پیاده سازی ها رو اعمال کرده که بحث optional ها توی java8 یکی از اون موارد هستش .

اگه از maven استفاده میکنین میتونین با اضافه کردن کدهای زیر به pom.xml اون رو دانلود و به پروژتون اضافه بکنید .

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>19.0</version>
</dependency>

ازطریق گریدل هم میشه با کد زیر دانلودش کرد .

dependencies {
  compile 'com.google.guava:guava:19.0'
}

حالا بعد از نصب میتونیم از پیاده سازی ها و util هایی که ارائه داده استفاده کنیم .

فرض کنید آرایه ای از اعداد داریم و بعضی از خونه های این آرایه ممکنه خالی یا Null باشه و میخواهیم توی خروجی اونها رو حذف کنیم ، با پیاد سازی های Guava میشه به شکل زیر عمل کرد :

     System.out.println(Joiner.on(",")
         .skipNulls()
         .join(Arrays.asList(1,2,3,4,5,null,6)));
خروجی  1,2,3,4,5,6

پیاده سازی multi list در Guava :

مولتی لیست میتواند عناصر تکراری را در خود نگه داشته و همچنین پردازش های خاصی میتواند بر روی لیست انجام دهد مانند اضافه کردن عنصر جدید ، شمارش تکرار یک عنصر و ... .

برای شروع میتونیم از روش زیر استفاده کنیم :

     Multiset<String> multiset = HashMultiset.create();
 
       multiset.add("a");
      multiset.add("b");
      multiset.add("c");
      multiset.add("d");
      multiset.add("a");
      multiset.add("b");
      multiset.add("c");
      multiset.add("b");
      multiset.add("b");
      multiset.add("b");

حال میتونیم طبق کدهای زیر پردازش های خاصی مثل پیدا کردن عناصر تکراری ، iterate کردن و... رو انجام بدیم :

//print the occurrence of an element
      System.out.println("Occurrence of 'b' : "+multiset.count("b"));
      
      //print the total size of the multiset
      System.out.println("Total Size : "+multiset.size());
      
      //get the distinct elements of the multiset as set
      Set<String> set = multiset.elementSet();

      //display the elements of the set
      System.out.println("Set [");
      
      for (String s : set) {
         System.out.println(s);
      }

      System.out.println("]");
      
      //display all the elements of the multiset using iterator
      Iterator<String> iterator  = multiset.iterator();
      System.out.println("MultiSet [");

      while(iterator.hasNext()) {
         System.out.println(iterator.next());
      }
      
      System.out.println("]");
      
      //display the distinct elements of the multiset with their occurrence count
      System.out.println("MultiSet [");

      for (Multiset.Entry<String> entry : multiset.entrySet()) {
         System.out.println("Element: " + entry.getElement() + ", Occurrence(s): " + entry.getCount());
      }
      System.out.println("]");

      //remove extra occurrences
      multiset.remove("b",2);
      
      //print the occurrence of an element
      System.out.println("Occurence of 'b' : " + multiset.count("b"));

خروجی کد های بالا :

Occurence of 'b' : 5
Total Size : 10
Set [
d
b
c
a
]
MultiSet [
d
b
b
b
b
b
c
c
a
a
]
MultiSet [
Element: d, Occurence(s): 1
Element: b, Occurence(s): 5
Element: c, Occurence(s): 2
Element: a, Occurence(s): 2
]
Occurence of 'b' : 3

در حالت کلی راهکارها و best practice هایی رو که Guava پیاده سازی کرده بسیار هوشمندانه و راه گشا هستش و تا حد زیادی بهینه هست .

ویرگول,جاوا,برنامه نویسی,guava,java,