Google Guava - фантастическая библиотека, в этом нет никаких сомнений. Тем не менее, он реализован в Java и страдает от всех ограничений, которые это подразумевает:
- Нет интерфейса неизменяемой коллекции в стандартной библиотеке
- Нет лямбда-литералов (замыканий), так что есть некоторые тяжелые шаблоны вокруг типов SAM, необходимых для, например, предикаты
- много дублирования в спецификациях типов, особенно когда используются дженерики
Гуава также должна существовать при наличии стандартной библиотеки коллекций Java, поэтому сторонние библиотеки редко предоставляют литералы, совместимые с гуавой, или используют типы коллекций, специфичные для гуавы. Это вызывает несоответствие импеданса для каждой сторонней библиотеки, которую вы используете. Например, вы, как правило, захотите преобразовать возвращенные коллекции из таких библиотек в соответствующую неизменяемую коллекцию guava - особенно если вы работаете в многопоточной среде.
Коллекции Scala имеют дизайн, который намного лучше интегрирован в язык, вы найдете их широко используемыми во всей стандартной библиотеке scala и в сторонних продуктах, реализованных в Scala. Коллекции Scala также являются неизменяемыми по умолчанию, поэтому вы получите гораздо более безопасный код, который не требует дополнительного слоя защитной упаковки.
Если вы можете использовать Scala, тогда сделайте это, у него есть много преимуществ, помимо рамок коллекций. Если вам нужно использовать Java, тогда Guava - хороший выбор, особенно учитывая, что коллекции Scala не особенно просты в использовании без языковых функций, которые предоставляет Scala.
В смешанном проекте коллекции Guava могут быть префектно использованы из Scala, но язык также предоставляет механизмы, позволяющие вам использовать коллекции Java (включая Guava, которые предоставляют те же интерфейсы), как если бы они были собственными коллекциями Scala.