糊言亂語

          志未半斤, 才無八兩. 有苦有樂, 糊涂過活。
          posts - 25, comments - 7, trackbacks - 0, articles - 42
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          首先來看Bag組。

           

          Bag

          HashBag

          BagUtils

           

          Bag是在org.apache.commons.collections包中定義的接口,它extends java.util.Collection,而它的實現類都被放在下面的bag包中。之所以有這樣一組類型,是因為我們有時候需要在Collection中存放多個相同對象的拷貝,并且需要很方便的取得該對象拷貝的個數。需要注意的一點是它雖然extends Collection,但是如果真把它完全當作java.util.Collection來用會遇到語義上的問題,詳細信息參考Javadoc

           

          HashBagBag接口的一個標準實現。而BagUtils提供一組static的方法讓調用者獲取經過不同裝飾后的Bag實例。

           

          還是舉例子來看:

           

          /** Book.java */

           

          package sean.study.commons.collections;

           

          import org.apache.commons.lang.builder.ToStringBuilder;

          import org.apache.commons.lang.builder.ToStringStyle;

           

          public class Book {

             

              private String name;

              private String isbn;

              private double retailPrice;

             

              public Book() {

              }

             

              public Book(String name, String isbn, double retailPrice) {

                  this.name = name;

                  this.isbn = isbn;

                  this.retailPrice = retailPrice;

              }

             

              public String toString() {

                  return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)

                  .append("name", name)

                  .append("ISBN", isbn)

                  .append("retailPrice", retailPrice)

                  .toString();

              }

           

              public String getIsbn() {

                  return isbn;

              }

           

              public void setIsbn(String isbn) {

                  this.isbn = isbn;

              }

           

              public String getName() {

                  return name;

              }

           

              public void setName(String name) {

                  this.name = name;

              }

           

              public double getRetailPrice() {

                  return retailPrice;

              }

           

              public void setRetailPrice(double retailPrice) {

                  this.retailPrice = retailPrice;

              }

             

          }

           

          /** BagUsage.java */

           

          package sean.study.commons.collections;

           

          import org.apache.commons.collections.Bag;

          import org.apache.commons.collections.BagUtils;

          import org.apache.commons.collections.bag.HashBag;

          import org.apache.commons.lang.StringUtils;

           

          public class BagUsage {

           

              public static void main(String[] args) {

                  demoBagUsage();

              }

           

              public static void demoBagUsage() {

           

                  System.out.println(StringUtils.center(" demoBagUsage ", 40, "="));

           

                  // data setup

                  Book book1 = new Book("Refactoring Workbook", "7-5083-2208-8", 29.8);

                  Book book2 = new Book("J2EE Design Patterns", "7-5083-3099-4", 45);

                  Book book3 = new Book("Agile Software Development", "7-5083-1503-0", 59);

           

                  // create a bag

                  Bag myBag = BagUtils.typedBag(new HashBag(), Book.class);

                  myBag.add(book1, 360);

                  myBag.add(book2, 500);

                  myBag.add(book3, 170);

           

                  // calculations for a bag

                  double price1 = book1.getRetailPrice();

                  double price2 = book2.getRetailPrice();

                  double price3 = book3.getRetailPrice();

                  int book1Count = myBag.getCount(book1);

                  int book2Count = myBag.getCount(book2);

                  int book3Count = myBag.getCount(book3);

                  double totalValue = (price1 * book1Count) + (price2 * book2Count)

                          + (price3 * book3Count);

           

                  // dispaly results

                  System.out.println("There are " + book1Count + " copies of "

                          + book1.getName() + ".");

                  System.out.println("There are " + book2Count + " copies of "

                          + book2.getName() + ".");

                  System.out.println("There are " + book3Count + " copies of "

                          + book3.getName() + ".");

                  System.out.println("The total value of these books is: " + totalValue);

           

                  System.out.println();

           

              }

           

          }

           

          以下是運行結果:

           

          ============= demoBagUsage =============

          There are 360 copies of Refactoring Workbook.

          There are 500 copies of J2EE Design Patterns.

          There are 170 copies of Agile Software Development.

          The total value of these books is: 43258.0

           

          需要說明的是,以上的代碼僅僅為了演示如何使用Bag,實際應用不建議像這樣硬編碼。
          主站蜘蛛池模板: 海宁市| 安吉县| 本溪市| 内黄县| 阿拉善右旗| 巴南区| SHOW| 永康市| 徐闻县| 师宗县| 特克斯县| 西乌珠穆沁旗| 应城市| 光山县| 湖州市| 阿鲁科尔沁旗| 高安市| 泰州市| 河曲县| 辽阳县| 沂南县| 抚顺市| 赞皇县| 彝良县| 镇平县| 稷山县| 鹤峰县| 肥乡县| 高唐县| 巴青县| 沁源县| 平原县| 青神县| 山阳县| 潜山县| 绍兴县| 丰城市| 平度市| 漳平市| 曲阜市| 元阳县|