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數組定義的密鑰,一個是採用某種加密演算法加密後的密鑰。。。。。