keyjava
㈠ Json数据解析key为java关键字怎么办
你自己定义的bean里面稍微变一下,使用序列化的方式就可以正常获取了。回
需要答使用jackson的相关jar。
@JsonProperty("abstract")
private String myAbstract;
㈡ Java怎样创建两个KEY的MAP
就像在XY坐标系中,一个X刻度、一个Y刻度,会对应图上的一个点,即pair(x, y) – > point,那么就有创建一个点,或者根据(x, y)来寻求一个点的需求,如果用Python的语法表达,是这个样子:
Python中表达pair KEY映射MAP的方法
Python
dict((x, y) : point)
dict ( ( x , y ) : point )
然而在JAVA中却变得不容易,骨钩了一下,有这么一些方法:
使用嵌套MAP
嵌套MAP实现双KEY MAP
Java
Map<Integer, Map<Integer, V>> map = //...
// ...
map.get(2).get(5);
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的包装类
Java
public class Key {
private final int x;
private final int y;
public Key(int x, int y) {
this.x = x;
this.y = y;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof Key)) return false;
Key key = (Key) o;
return x == key.x && y == key.y;
}
@Override
public int hashCode() {
int result = x;
result = 31 * result + y;
return result;
}
}
public class Key {
private final int x ;
private final int y ;
public Key ( int x , int y ) {
this . x = x ;
this . y = y ;
}
@Override
public boolean equals ( Object o ) {
if ( this == o ) return true ;
if ( ! ( o instanceof Key ) ) return false ;
Key key = ( Key ) o ;
return x == key . x && y == key . y ;
}
@Override
public int hashCode ( ) {
int result = x ;
result = 31 * result + y ;
return result ;
}
}
以这种方法提前包装好一个类,类中有x和y两个属性,同时提供equals方法用于“点”的比较,提供hashCode用于使用在计算对象在散列表中的位置。
为什么要覆盖hashCode方法?请 参见链接
写完这个pair类之后,就好用了:
实现了pair类之后的双key的MAP写法
Java
Map<Key, V> map = //...
map.get(new Key(2, 5));
Map < Key , V > map = //...
map . get ( new Key ( 2 , 5 ) ) ;
这种方法以更多的代码为代价来实现pair key的map,pair class的编写中,不能忘记覆盖equals和hashcode方法,增加了代码量,感觉不是很好用。
GOOGLE的HashBasedTable类库
这种方法感觉才是最直观,最好用的
使用GOOGLE的HashBasedTable实现PAIR KEY
Java
import com.google.common.collect.HashBasedTable;
import com.google.common.collect.Table;
// 创建
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);
import com . google . common . collect . HashBasedTable ;
import com . google . common . collect . Table ;
// 创建
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 ) ;
惊叹,好用。在JAVA语言里,写成这样的代码,可称之为艺术。
无限维度的KEY
有两种方法可以实现无线维度的KEY,第一种和本文的第二种方法一样,先写一个CLASS,里面有无限个属性,然后作为MAP的KEY。
第二种,如果类型一样,可以这样子实现:
使用List作为无限MAP的KEY
Java
Map<List<Integer>, V> map = //...
Map < List <Integer> , V > map = //...
但是这种方法易出错、不易读,并且性能很低。
总结
要实现map的key是两个绑定的属性,或者称之为pair key,个人认为首先使用google的HashBasedTable类库,其次的方法是编写对应的class。
㈢ java类,用key
Map map = new HashMap<Object,Object>();
map.put("a","A");
map.put(1,1);
map.put(2.5,2.5);
Collections.sort(map);
//循环输出MAP
㈣ JAVA语言中KeyListener接口的使用,即keyPressed、keyTyped和keyReleased三种方法的按键应该是如何操作的
监听器应该加在JTextArea上,而不是窗口上:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class KeyinEvent extends JFrame implements KeyListener
{
JTextArea textarea=new JTextArea(4,20);
Container c;
public KeyinEvent()
{
super("按键测试");
c=getContentPane();
c.setLayout(new FlowLayout());
textarea.addKeyListener(this);
c.add(textarea);
//textarea.setText("请按任意键");
setSize(300,120);
setVisible(true);
//addKeyListener(this);
}
public void keyPressed(KeyEvent e)
{
String line1="按键"+e.getKeyChar();
String line2="按键是否为Action键"+e.isActionKey();
String mkey=e.getKeyModifiersText(e.getModifiers());
String line3="是否按下Modifier键"+(mkey.equals("")?"否":"是,其键为:"+mkey);
textarea.setText(line1+"\n"+line2+"\n"+line3+"\n");
}
public void keyReleased(KeyEvent e){}
public void keyTyped(KeyEvent e){}
public static void main(String[] args)
{
KeyinEvent be=new KeyinEvent();
be.addWindowListener(new MyWindowListener());
}
}
class MyWindowListener implements WindowListener
{
public void windowActivated(WindowEvent e)
{
System.out.println("窗口为活动状态");
}
public void windowClosed(WindowEvent e)
{
System.out.println("窗口为关闭状态");
System.exit(0);
}
public void windowClosing(WindowEvent e)
{
System.out.println("窗口正在关闭");
System.exit(0);
}
public void windowDeactivated(WindowEvent e)
{
System.out.println("窗口不再活动");
}
public void windowDeiconified(WindowEvent e)
{
System.out.println("窗口由最小化变为正常");
}
public void windowIconified(WindowEvent e)
{
System.out.println("窗口为最小化");
}
public void windowOpened(WindowEvent e)
{
System.out.println("窗口首次可见");
}
}
㈤ java中map<key,value>是什么意思
java中map<key,value>是泛型的典型样式。
key和value代表键和值,你可以想象成两个值一一对应,可以根据key查找到value的值。你可以把省作为key,省会作为value,根据省可以查到省会。或者把整数作为key,任何对象作为value,就和数组一样根据整数能找到对应的对象。
Map<String,int> 就表示这个 map 的key 是String 类型 value 是 int 类,就是 强制设计期就限定map 里面元素的类型.
JDK 5.0 中增加的泛型类型,是 Java 语言中类型安全的一次重要改进。
泛型编程(Generic Programming)最初提出时的动机很简单直接:发明一种语言机制,能够帮助实现一个通用的标准容器库。所谓通用的标准容器库,就是要能够做到,比如用一个List类存放所有可能类型的对象,这样的事情;
更多内容请参考《java泛型详解_网络》
㈥ java Map 根据Map的值(value)取键(key)
java根据Map的值(value)取键(key) 的实现方法有4种,分别为:
(1)使用for循环遍历
(2)使用Iterator迭代器
(3)使用KeySet迭代
(4)使用EnterySet迭代
下面为以上4种方法具体实现的代码:
1、使用for循环遍历
public static Object getKey(HashMap<Object,Object> map, String v) {
String key = "";
for (Map.Entry<String, Object> m :map.entrySet()) {
if (m.getValue().equals(v)) {
key = m.getKey();
}}
return key;
}
㈦ JAVA基础 key在这里干什么搞不懂
key在这里是你要查找的内容(文字列)。
举个例子
Stringstr="abcdef";
Stringkey="cde";
intindex=1;
这时
str.indexOf(key,index)
就返回2。因为我们从"abcdef"的index=1(b的位置)开始找,找到了"cde","cde"在str中的index=2。
此时,我们要继续找到话就要从 str 的 index = 2 + 3 的地方开始找。
2代表的是 "cde"在str中的index
3代表的是"cde"的长度,也就是key.length()。
㈧ java里老是说key,这是什么东东
比如说在jsp中吧:session.setAttribute("name","事例")//第一个是键,第二个是值
然后再别的网页获取这个值:session.getAttribute("name")
这样很方便,我专只需要调用键就属能够读到值,这个键就像Id似的!
㈨ 求 JAVA key
请问你的JCreater版本是什么,那不是javakey,是你的JCreater的序列号
㈩ 在java中,加密和解密时密钥类型用Key和SecretKeySpec有什么区别
一个是你的byte数组定义的密钥,一个是采用某种加密算法加密后的密钥。。。。。