2010-10-13 119 views
5

我已經繼承了一個團隊和一個(Java)代碼庫。你推薦什麼Java Collections庫?

代碼庫使用了很多明確的for each循環。我想用Commons Collections Transformers和Predicates以及它的收集和轉換方法替換那些(編輯:在未來的代碼中)。

但是,Commons Collection不是通用的。我的代碼庫的其餘部分,無論它缺少什麼,我都不想引入大量的投射。

因此,我正在尋找Commons-Collections with Generics(http://sourceforge.net/projects/collections/)和Guava(以前稱爲Google Collections)(http://code.google.com/p /番石榴的庫/)。

問題一:這些庫中的一個或兩個是否被普遍認爲對生產有用?你在生產中使用嗎?

問題二:這兩個問題,你建議?任何使用過的人的答案都很棒,所有使用這兩者的人的答案都會更好!

最後,我的團隊包括中高級承包商和Java中級和初級員工(編輯:但具有多年非OO編程經驗)的組合。所以我不想介紹一個以上的集合庫,而且我確實希望有一個對我的團隊來說不會太難。

謝謝!

編輯:我想替換顯式循環,因爲樣板的數量模糊和壓倒實際的業務代碼。我有嵌套的循環調用嵌套循環的函數,所有這些都是做單行的事情。通過適當的介紹和培訓,我覺得我的團隊會發現收集/變壓器/謂詞方法更清晰,更清晰,寫得更快,並且更易於閱讀。

+1

Commons Collections如果不希望每個人都跳到Guava,那麼他們確實需要拿出一個Java5版本。我並不介意在Commons Lang中使用泛型和可變參數,但對於收藏庫來說,這是非常重要的。 – Thilo 2010-10-13 03:07:46

+3

相關:[Commons Collections vs Google Collections](http://stackoverflow.com/questions/1444437/apache-commons-vs-google-collections)。仍然是實際的IMO。也看[這部電影](http://www.youtube.com/watch?v=ZeO_J2OcHYM)。 – BalusC 2010-10-13 03:08:11

+2

爲了替換代碼或者因爲你今天每個''風格都有缺陷,你在替換代碼嗎? – 2010-10-13 03:09:32

回答

4

我在生產中使用Google收藏並從未遇到過問題。讓你希望java有函數指針,但他的設計很好。即使他像Lists.newArrayList這樣的小事情也成爲新增列表的標準方式。

+0

「讓你希望Java有函數指針」。 Java 8.手指交叉。 – Thilo 2010-10-13 03:13:11

+1

@Thilo:也許是Java 10.也許吧。 – 2010-10-13 03:32:55

+0

JDK7(現在8,我猜)「包含一個新的包java.dyn,它包含與Java平臺中的動態語言支持相關的類。包中的一個類是MethodHandle。方法句柄是一個簡單的對象類型爲java.dyn.MethodHandle的匿名封裝對JVM方法的引用。方法句柄可調用,就像對方法的命名引用一樣。「 http://www.oracle.com/technetwork/issue-archive/2010/10-may/o30java-099612.html – Thilo 2010-10-16 05:42:02

2

看來您並不是在尋找一個Collection庫,而是一個以功能方式處理現有集合的庫。

我自己寫了這樣一個庫,但它不是開源的(它只在我公司內部使用),它可能不是最好的設計。

一個目標相同的圖書館似乎很有希望:lambdaj。我自己並沒有使用它,但是如果我當時知道lambdaj的存在,我想我不會寫我的圖書館。

相關問題