怎么分辨一个steam key零售网站key的网站的key的subid

Java怎样创建两个KEY(key-pair)的MAP - 推酷
Java怎样创建两个KEY(key-pair)的MAP
就像在XY坐标系中,一个X刻度、一个Y刻度,会对应图上的一个点,即pair(x, y) – & point,那么就有创建一个点,或者根据(x, y)来寻求一个点的需求,如果用Python的语法表达,是这个样子:
Python中表达pair KEY映射MAP的方法
dict((x, y) : point)
然而在JAVA中却变得不容易,骨钩了一下,有这么一些方法:
使用嵌套MAP
嵌套MAP实现双KEY MAP
Map&Integer, Map&Integer, V&& map = //...
map.get(2).get(5);
这种方法将水平的KEY切换成了垂直KEY,我们要找寻XY坐标系中(x, y)对应的点,其实可以先找x点的那条垂直线,然后找出这条垂直线上y高度的那个点。
但是要取得这个双KEY的VALUE,得有2次GET,实例代码没有做第一次GET的NULL判断,有隐患!并且感觉不是很直观。
写一个pair key的包装类
pair key的包装类
public class Key {
public Key(int x, int y) {
public boolean equals(Object o) {
if (this == o)
if (!(o instanceof Key))
Key key = (Key)
return x == key.x && y == key.y;
public int hashCode() {
int result =
result = 31 * result +
instanceof
以这种方法提前包装好一个类,类中有x和y两个属性,同时提供equals方法用于“点”的比较,提供hashCode用于使用在计算对象在散列表中的位置。
为什么要覆盖hashCode方法?请
写完这个pair类之后,就好用了:
实现了pair类之后的双key的MAP写法
Map&Key, V& map = //...
map.get(new Key(2, 5));
这种方法以更多的代码为代价来实现pair key的map,pair class的编写中,不能忘记覆盖equals和hashcode方法,增加了代码量,感觉不是很好用。
GOOGLE的HashBasedTable类库
这种方法感觉才是最直观,最好用的
使用GOOGLE的HashBasedTable实现PAIR KEY
import mon.collect.HashBasedT
import mon.collect.T
Table&Long, Long, Point& plane = HashBasedTable.create();
plane.put(1L, 2L, pointA);
plane.put(1L, 3L, pointB);
plane.put(1L, 4L, pointC);
Point pointA = plane.get(1L, 2L);
Point pointB = plane.get(1L, 2L);
HashBasedTable
HashBasedTable
惊叹,好用。在JAVA语言里,写成这样的代码,可称之为艺术。
无限维度的KEY
有两种方法可以实现无线维度的KEY,第一种和本文的第二种方法一样,先写一个CLASS,里面有无限个属性,然后作为MAP的KEY。
第二种,如果类型一样,可以这样子实现:
使用List作为无限MAP的KEY
Map&List&Integer&, V& map = //...
但是这种方法易出错、不易读,并且性能很低。
要实现map的key是两个绑定的属性,或者称之为pair key,个人认为首先使用google的HashBasedTable类库,其次的方法是编写对应的class。
可是,这些总感觉不是那么的方便,python那种{tuple : value}的方法,咋就那么艺术呢!
本文翻译自:
中的一个答案。
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致android java(13)
&要有序可以用List,要便于查找可以用Map,那既要有序又便于查找呢?
&&&&&&& 最近我就遇到了这样一个问题,Java没有给我们提供现成的类,我们完全可以自己开发个类继承List和Map(Java原来就有不可以同时继承List和Map的Bug,因此特意去看了下这个Bug的状态——Closed,呵呵,应该是很老的版本才有的问题,用新版本的朋友不用担心会遇到这个问题),但是完全没必要白花那个力气,因为Apache的Commons Collections的Jar包里已经为我们提供了一个相当完备的类来满足我们这样的要求完全是绰绰有余。因此我们现在要做的仅仅是引入Jar包,然后使用这个现成的好东西——ListOrderedMap就可以啦。
&&&&&&&&&让我们来看看代码:
ListOrderedMap&list&=&new&ListOrderedMap();
for(int&i&=&0;&i&&&objs.&i++)&{
&&&&list.put(objs[i].getId(),&objs[i]);
&&&&&&& 初始化很简单吧,没有一点技术难度,往里边放数据和Map没一点区别,需要注意的是Map我们可以在初始化的时候加上类型,比如Map&String, String&,但是ListOrderedMap不可以,就这么点差别,要记得哦。但是这个差别也是ListOrderedMap让人最不满意的地方,因为这说明他是类型不安全的。
&&&&&&& 接下来,看看我们都用到了ListOrderedMap的哪些方法:
int&themeId&=&((Obj)&list.getValue(0)).getThemeId();
int&index&=&list.indexOf(key);
if&(index&==&list.size()&-&1)&{
&&&&obj=&(Obj)&list.getValue(0);
}&else&if&(index&!=&-1)&{
&&&&obj=&(Obj)&list.getValue(index&+&1);
&&&&&&&&getValue(int index)直接根据Index取得Value,当然也可以直接根据Index取得Key值,方法名可不是getKey(int index),而是直接get(int index)就可以啦。接着我们想取到当前Key值后面一个Key值所对应的Value,首先用indexOf(Object key)取得Index,然后计算其后面的Index再根据此Index取值。如果想取得当前Key值后面一个Key值,则不必要先取Index,这么麻烦,ListOrderedMap里有直接的方法可以取得当前Key值的前一个Key值和后一Key值,分别是previousKey(Object
key)方法和nextKey(Object key)方法,返回null值表示到头(或尾)了,或者没有找到和当前Key值匹配的Key值&。个至于这边为什么要有If和Else if,原因很简单,和一般的索引一样,返回值是-1就表示没有找到。我们在这里做了一个循环,而且我的这个ListOrderedMap的数列是确保长度大于0的,所以我把index==list.size()-1的判断放在了前边,如果不能确定长度是否大于0,还是先判断返回值是否为-1为好。
在此附上jar包的下载地址:
&&&&&&& 本文只简单介绍了ListOrderedMap的几种比较实用的方法,其他方法使用方法可以参考Apache网站上的相关API:
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:61074次
积分:1376
积分:1376
排名:千里之外
原创:59篇
转载:110篇
评论:24条
(12)(7)(2)(2)(8)(12)(4)(7)(2)(3)(1)(2)(4)(5)(9)(1)(1)(10)(1)(4)(7)(19)(5)(4)(12)(4)(3)(8)(1)(2)(6)(3)(1)

我要回帖

更多关于 steam key零售网站 的文章

 

随机推荐