菏泽网站获客网站建设公司wordpress文章外链缩略图
news/
2025/9/23 18:10:16/
文章来源:
菏泽网站获客网站建设公司,wordpress文章外链缩略图,深圳最好的营销网站建设公司,wordpress oa教程谷歌guava番石榴 这是我尝试解释和探索Google很棒的Guava java库的系列文章中的第一篇。 我在搜索Apache Commons Collections的通用版本时遇到了番石榴#xff08;Guava#xff09;–我需要一个Bimap并且厌倦了必须使用强制类型转换来填充我的代码–但是我发现要好得多。 … 谷歌guava 番石榴 这是我尝试解释和探索Google很棒的Guava java库的系列文章中的第一篇。 我在搜索Apache Commons Collections的通用版本时遇到了番石榴Guava–我需要一个Bimap并且厌倦了必须使用强制类型转换来填充我的代码–但是我发现要好得多。 它不仅含有更复杂但有用集合类型-的各种实现屈德宁 多集 Bimaps -我将详细讨论但也设施以支持具有不可变的集合编程的功能更强大的样式 功能和谓语对象。 这完全改变了我编写Java的方式同时使我对Java有时笨拙的语法越来越沮丧这是我打算在以后的文章中探讨的。 无论如何只要有了介绍再加上好东西。 我要看的第一件事是Multimap它可能是我最常使用的单个Guava功能。 多图 那么您多久需要一次如下所示的数据结构 MapString,ListMyClass myClassListMap test2 new HashMapString,ListMyClass() 如果你像我一样经常。 而且您是否发现自己一次又一次地编写相同的样板代码 要将键/值对放入此映射您需要首先检查您的键是否已经存在列表以及是否没有创建该列表。 您最终将按照以下内容写一些东西 void putMyObject(String key, Object value) {ListObject myClassList myClassListMap.get(key);if(myClassList null) {myClassList new ArrayListobject();myClassListMap.put(key,myClassList);}myClassList.add(value);
} 有点麻烦如果您需要用于检查值的方法该方法存在删除值或什至遍历整个数据结构该怎么办。 那可能是很多代码。 永远不要担心番石榴在这里 就像标准的Java集合一样Guava定义了几个接口和匹配的实现。 通常您要对接口进行编码而仅在创建接口时才担心实现。 在这种情况下我们对Multimaps感兴趣。 因此使用多图我们可以将数据结构声明替换为以下内容 MultimapString,Object myMultimap ArrayListMultimap.create(); 这里有几件事要注意。 泛型类型声明应该看起来非常熟悉这正是您声明普通Map的方式。 您可能已经期望在等号的右侧看到new ArrayListMultimapString,Object() 。 好吧所有Guava集合实现都提供一个create方法该方法通常更简洁并且具有不必重复泛型类型信息的优点。 实际上番石榴为标准Java集合添加了类似的功能。 例如如果检查com.google.common.collect.Lists 则会看到静态的newArrayList()和newLinkedList()方法因此即使使用标准Java集合也可以利用这种简洁性。 我将在以后的文章中详细介绍。 因此我们已经声明并实例化了一个multimap如何使用它们呢 就像法线贴图一样简单 public class MutliMapTest {public static void main(String... args) {MultimapString, String myMultimap ArrayListMultimap.create();// Adding some key/valuemyMultimap.put(Fruits, Bannana);myMultimap.put(Fruits, Apple);myMultimap.put(Fruits, Pear);myMultimap.put(Vegetables, Carrot);// Getting the sizeint size myMultimap.size();System.out.println(size); // 4// Getting valuesCollectionstring fruits myMultimap.get(Fruits);System.out.println(fruits); // [Bannana, Apple, Pear]Collectionstring vegetables myMultimap.get(Vegetables);System.out.println(vegetables); // [Carrot]// Iterating over entire Mutlimapfor(String value : myMultimap.values()) {System.out.println(value);}// Removing a single valuemyMultimap.remove(Fruits,Pear);System.out.println(myMultimap.get(Fruits)); // [Bannana, Pear]// Remove all values for a keymyMultimap.removeAll(Fruits);System.out.println(myMultimap.get(Fruits)); // [] (Empty Collection!)}
} 您可能想知道的一件事是为什么get方法返回的是Collection而不是List 这会有用得多。 确实会。 问题是有几种不同的实现方式一些使用Lists- ArrayListMultimap LinkedListMultimap等-某些使用Sets- HashMultimap TreeMultimap等。 要处理此问题如果您需要直接使用列表中的列表或集合需要定义几个子接口。 ListMultimap SetMultimap和SortedSetMultimap 。 这些都可以完成您期望的操作并且它们的返回集合的方法将返回approprite类型之一。 即 ListMutlimapString,String myMutlimap ArrayListMultimap.create();Liststring myValues myMutlimap.get(myKey); // Returns a List, not a Collection. 这基本上就是他们的全部。 我建议您查看以下API http : //docs.guava-libraries.googlecode.com/git-history/release09/javadoc/com/google/common/collect/Multimap.html 在这里您可以找到各种实现应该能够找到适合您需求的产品。 参考 Multimaps – Toms Programming Blog博客上JCG合作伙伴 Tom Jefferys的Google Guava 。 翻译自: https://www.javacodegeeks.com/2012/12/google-guava-multimaps.html谷歌guava
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/913422.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!