当前位置: 首页 > news >正文

建设 静态网站全球十大网站排名

建设 静态网站,全球十大网站排名,如何利用ftp上传网站,5113二次加密和三次加密在sun的API中,map是不支持直接存放相同的key的,相同key会被后一个key替代的,但是我们可以通过一些工具包实现这样的功能 ——> Google基于java1.6的类库集合的扩展项目–Guava,其中com.google.common.collect包就支持这样的操作…

在sun的API中,map是不支持直接存放相同的key的,相同key会被后一个key替代的,但是我们可以通过一些工具包实现这样的功能 ——> Google基于java1.6的类库集合的扩展项目–Guava,其中com.google.common.collect包就支持这样的操作

 

MultiMap

场景:当需要实现Map<K, List<V>>或Map<K, Set<V>>数据结构时,代码会编写的很麻烦。

Multimap 提供了一个方便地把一个键对应到多个值的数据结构。

我们可以这样理解Multimap:”键-单个值映射”的集合(例如:a -> 1 a -> 2 a ->4 b -> 3 c -> 5)

特点:不会有任何键映射到空集合:一个键要么至少到一个值,要么根本就不在Multimap中。

主要方法介绍:

  • put(K, V):添加键到单个值的映射

  • putAll(K, Iterable<V>):依次添加键到多个值的映射

  • remove(K, V):移除键到值的映射;如果有这样的键值并成功移除,返回true

  • removeAll(K):清除键对应的所有值,返回的集合包含所有之前映射到K的值,但修改这个集合就不会影响Multimap了

  • replaceValues(K, Iterable<V>):清除键对应的所有值,并重新把key关联到Iterable中的每个元素。返回的集合包含所有之前映射到K的值

Multimap支持若干强大的视图

  • asMap为Multimap<K, V>提供Map<K,Collection<V>>形式的视图。返回的Map支持remove操作,并且会反映到底层的 Multimap,但它不支持put或putAll操作。更重要的是,如果你想为Multimap中没有的键返回null,而不是一个新的、可写的空集 合,你就可以使用asMap().get(key)。(你可以并且应当把asMap.get(key)返回的结果转化为适当的集合类型——如 SetMultimap.asMap.get(key)的结果转为Set,ListMultimap.asMap.get(key)的结果转为List ——Java类型系统不允许ListMultimap直接为asMap.get(key)返回List——译者注:也可以用Multimaps中的asMap静态方法帮你完成类型转换
  • entries用Collection<Map.Entry<K, V>>返回Multimap中所有”键-单个值映射”——包括重复键。(对SetMultimap,返回的是Set)
  • keySet用Set表示Multimap中所有不同的键。
  • keys用Multiset表示Multimap中的所有键,每个键重复出现的次数等于它映射的值的个数。可以从这个Multiset中移除元素,但不能做添加操作;移除操作会反映到底层的Multimap。
  • values()用 一个”扁平”的Collection<V>包含Multimap中的所有值。这有一点类似于 Iterables.concat(multimap.asMap().values()),但它直接返回了单个Collection,而不像 multimap.asMap().values()那样是按键区分开的Collection。

Multimap不是Map

  Multimap<K, V>不是Map<K,Collection<V>>,虽然某些Multimap实现中可能使用了map。它们之间的显著区别包括:

  • Multimap.get(key)总是返回非null、但是可能空的集合。这并不意味着Multimap为相应的键花费内存创建了集合,而只是提供一个集合视图方便你为键增加映射值——译者注:如果有这样的键,返回的集合只是包装了Multimap中已有的集合;如果没有这样的键,返回的空集合也只是持有Multimap引用的栈对象,让你可以用来操作底层的Multimap。因此,返回的集合不会占据太多内存,数据实际上还是存放在Multimap中。
  • 如果你更喜欢像Map那样,为Multimap中没有的键返回null,请使用asMap()视图获取一个Map<K, Collection<V>>。(或者用静态方法Multimaps.asMap()为ListMultimap返回一个Map<K, List<V>>。对于SetMultimap和SortedSetMultimap,也有类似的静态方法存在)
  • 当且仅当有值映射到键时,Multimap.containsKey(key)才会返回true。尤其需要注意的是,如果键k之前映射过一个或多个值,但它们都被移除后,Multimap.containsKey(key)会返回false。
  • Multimap.entries()返回Multimap中所有”键-单个值映射”——包括重复键。如果你想要得到所有”键-值集合映射”,请使用asMap().entrySet()。
  • Multimap.size()返回所有”键-单个值映射”的个数,而非不同键的个数。要得到不同键的个数,请改用Multimap.keySet().size()。

 

Multiset

Guava提供了一个新集合类型Multiset,它可以多次添加相等的元素,且和元素顺序无关。Multiset继承于JDK的Cllection接口,而不是Set接口。

Multiset主要方法介绍:

  • add(E element) :向其中添加单个元素
  • add(E element,int occurrences) : 向其中添加指定个数的元素
  • count(Object element) : 返回给定参数元素的个数
  • remove(E element) : 移除一个元素,其count值 会响应减少
  • remove(E element,int occurrences): 移除相应个数的元素
  • elementSet() : 将不同的元素放入一个Set中
  • entrySet(): 类似与Map.entrySet 返回Set<Multiset.Entry>。包含的Entry支持使用getElement()和getCount()
  • setCount(E element ,int count): 设定某一个元素的重复次数
  • setCount(E element,int oldCount,int newCount): 将符合原有重复个数的元素修改为新的重复次数
  • retainAll(Collection c) : 保留出现在给定集合参数的所有的元素
  • removeAll(Collectionc) : 去除出现给给定集合参数的所有的元素

 

Bimap

BiMap提供了一种新的集合类型,它提供了key和value的双向关联的数据结构。

  能非常方便的实现map<key,value>的转置要求,也就是value变为key,key变为value;

  保证值是唯一的,因此返回Set而不是普通的Collection

  注:在BiMap中,如果你想把键映射到已经存在的值,会抛出IllegalArgumentException异常。如果对特定值,你想要强制替换它的键,请使用 BiMap.forcePut(key, value)

 

测试代码:

package com.sythealth.ms.activities.web.rest.biz.assistant;import com.google.common.collect.*;import java.util.*;public class Test {public static void main(String[] args) {/*** ArrayuListMultiMap的使用,* 相当于map的 <key,List> 形式,返回List视图*/ArrayListMultimap<Integer, Object> amap = ArrayListMultimap.create();amap.put(1, "hello");amap.put(1, "guava");amap.put(2, "stydy");
//        System.out.println(amap); // {1=[hello, guava], 2=[stydy]}// get(key) 得到 collection 对象List<Object> list = amap.get(1);
//        System.out.println(list); // [hello, guava]/*** HashMultimap 实现往map中添加重复的key,这个是与set是不同的*/HashMultimap<Integer, Object> hmap = HashMultimap.create();hmap.put(1, "hello");hmap.put(1, "guava"); //可以添加重复的key,不会被替换hmap.put(2, "stydy");// 由get(key) 得到Set视图Set<Object> set = hmap.get(1);
//        System.out.println(set); //[guava, hello]// entries用Collection<Map.Entry<K, V>>返回Multimap中所有”键-单个值映射”——包括重复键(对SetMultimap,返回的是Set),遍历了三次for (Map.Entry<Integer, Object> entry : hmap.entries()) {Integer key = entry.getKey();Object value = entry.getValue();
//            System.out.print(key + ":" + value + " "); // 1:guava 1:hello 2:stydy}// asMap()为Multimap<K, V>提供Map<K,Collection<V>>形式的视图,转成asMap后进行遍历,遍历了两次Map<Integer, Collection<Object>> asMap = hmap.asMap();for (Map.Entry<Integer, Collection<Object>> entry : asMap.entrySet()) {Integer key = entry.getKey();Object value = entry.getValue();
//            System.out.print(key + ":" + value + " "); // 1:[guava, hello] 2:[stydy]}/*** Multiset 实现往set中添加重复的元素*/Set<Integer> set1 = new HashSet<>();set1.add(3);set1.add(2);set1.add(2);set1.add(4);
//        System.out.println(set1); // [2, 3, 4]Multiset<Integer> mset = HashMultiset.create();mset.add(3);mset.add(2);mset.add(2);mset.add(4);
//        System.out.println(mset); // [2 x 2, 3, 4]// Multiset看做map时候的功能//      1,elementSet 将不同的元素放入一个Set中,(返回不重复的元素)Set<Integer> elementSet = mset.elementSet();
//        System.out.println(elementSet); // [2, 3, 4]//      2,entrySet 类似与Map.entrySet 返回Set<Multiset.Entry>,(返回重复的元素)Set<Multiset.Entry<Integer>> entrySet = mset.entrySet();
//        System.out.println(entrySet); // [2 x 2, 3, 4]/*** Multiset实现统计某个元素的个数*/List<Integer> list2 = new ArrayList<>();list2.add(3);list2.add(2);list2.add(2);list2.add(4);// Multiset的addAll方法以及统计指定元素的个数的方法Multiset<Integer> mset2 = HashMultiset.create();mset2.addAll(list2);
//        System.out.println(mset2); // [2 x 2, 3, 4]// 统计某个元素的个数int count = mset.count(2);
//        System.out.println("2的个数为 = " + count); // 2的个数为 = 2// 直接设置某个元素的个数,直接修改了数据
//        mset2.setCount(2, 1);
//        System.out.println(mset2); // [2, 3, 4]mset2.setCount(2, 2, 5);// 将符合原有重复个数的元素修改为新的重复次数System.out.println(mset2); // [2 x 5, 3, 4]/***  BiMap的使用:*  BiMap可以使得map的value为唯一,并且可以通过value得到key*/BiMap<String,Integer> bmap = HashBiMap.create();bmap.put("zhangsan", 3);bmap.put("li", 4);bmap.put("wang", 2);
//        System.out.println(bmap); // {zhangsan=3, li=4, wang=2}// 通过value的到keyString key = bmap.inverse().get(4);
//        System.out.println(key); // li}
}

 

使用案例

// 返回的数据结构为:集合中存放集合,按照1,2,3自然顺序排序
Collection<Collection<Object>> list = Lists.newArrayList();
Multimap<Integer, Object> multimap = ArrayListMultimap.create();
multimap.put(1, "hello");
multimap.put(3, "test");
multimap.put(1, "guava");
multimap.put(2, "stydy");
List<Integer> keys= Lists.newArrayList(multimap.keySet());
// 自然排序
keys.sort(Comparator.naturalOrder());
for (Integer key : keys) {list.add(Lists.newArrayList(multimap.get(key)));
}
return list;

 


参考来源于:

https://www.cnblogs.com/parryyang/p/5776654.html

https://blog.csdn.net/baidu_37464759/article/details/77368209

 

 

http://www.lbrq.cn/news/2469169.html

相关文章:

  • 5000人网站开发域名查询注册信息查询
  • 学做网站的学校乔拓云网微信小程序制作
  • 网站上线流程分为seo职位要求
  • 用GIF软件做的GIF 超出网站限制免费信息发布平台网站
  • 成都私人放款联系方式电话优化公司网站排名
  • 就业网站建设总结seo网络推广师招聘
  • 杭州的电商网站建设百度大搜是什么
  • 网站开发的技术意义个人seo外包
  • 朗读者外国人做的汉字网站个人自己免费建网站
  • 公司注册地址可以跨市变更吗广州seo外包公司
  • vue做的商城网站seo是哪个英文的缩写
  • 展厅设计图效果图大全seo比较好的优化方法
  • 电子商务网站建设与管理目录企业推广软文范文
  • 昆山市住房和建设局网站成功的网络营销案例有哪些
  • 做网站需要注册商标多少类电子商务seo名词解释
  • 建设门户网站的重要性邵阳疫情最新消息
  • 九亭做网站友情链接你会回来感谢我
  • wordpress多用户商城系统上海整站seo
  • 如何通过网站做网上报名系统seo技术推广
  • 杭州战争网站建设投资网站建设方案
  • 做网站精英软文写作服务
  • p2p网站制作价格专业网站建设
  • 域名没备案如何建设网站台州关键词优化服务
  • 重庆网上房地产查询备案价裤子seo关键词
  • 给网站可以怎么做外链nba最新排名
  • 搜索引擎网站推广可以自己做吗网站推广的工作内容
  • 政府网站建设项目简介凤凰网台湾资讯
  • 网页在线代理上网网站自然优化
  • 做阿里还是网站最近中国新闻热点大事件
  • 男人和女人做受吃母乳视频网站免费福建优化seo
  • 深入解析三大Web安全威胁:文件上传漏洞、SQL注入漏洞与WebShell
  • C++中new和delete的多重面孔:operator new、new operator与placement new解析
  • 解决 Delete ␍ prettier/prettier问题的方案
  • [Rust 基础课程]猜数字游戏-获取用户输入并打印
  • 如何轻松地让电脑传输大文件到另一台电脑?
  • 论文Review Registration TEASER | TRO | MIT出品,点云配准经典BenchMark | 硬核的数学长文