當前位置:首頁 » 編程語言 » javakey

javakey

發布時間: 2022-01-14 03:53:17

『壹』 怎樣將一個String轉化為Key類型(java.security.Key)。

java.security.Key
是介面,得通過該介面的相應的實現類取得相應的實例

『貳』 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中map<key,value>是什麼意思

key和value代表鍵和值,你可以想像成兩個值一一對應,可以根據key查找到value的值。你可以把省作為key,省會作為value,根據省可以查到省會。或者把整數作為key,任何對象作為value,就和數組一樣根據整數能找到對應的對象

『肆』 java map 多少個key

map是將鍵映射到值的對象。一個映射不能包含重復的鍵;每個鍵最多隻能映射到一個值。
map可以包含N個不重復的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中Map和Map<key,value>的區別。

Map<key,value>是Map的一個泛型形式,倆個Map之間實際上是一個東西,但是用法卻有點不一樣


Map:裡面存放的是鍵值對集合,鍵值對的類型可以是任意封裝類型

例:

Mapmap=newHashMap();
//以下的倆種使用方式都是對的
map.put("a",1);
map.put(11,"abc");

Map<key,value>:裡面存放的也是鍵值對集合,但是類型只能是<>中指定的類型

例:

Map<String,Integer>map=newHashMap<String,Integer>();
//正確使用方式
map.put("a",1);
//錯誤使用方式,會導致無法通過編譯
map.put(11,"abc");

『柒』 JAVA語言中KeyListener介面的使用,即keyPressed、keyTyped和keyReleased三種方法的按鍵應該是如何操作的

修改一下構造函數:
public KeyinEvent()
{
super("按鍵測試");
c=getContentPane();
c.setLayout(new FlowLayout());
c.add(textarea);
textarea.addKeyListener(new KeyListener(){

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){}

});
//textarea.setText("請按任意鍵");
// addKeyListener(this);
setSize(300,120);
setVisible(true);

//addKeyListener(this);
}

運行是游標定位到testarea上,所以要在testarea加監聽器才會起效

『捌』 java怎麼取map中的key值

map迭代,需要使用map的key,問度娘後記錄使用方法如下,希望更多人能學習到.

public class MyUtil1 {
public static void
iteratorMap1(Map m) {
Set
set=m.keySet();//用介面實例介面
Iterator iter =
set.iterator();
while (iter.hasNext())
{//遍歷二次,速度慢
String
k=(String)iter.next();

System.out.println(k +"="+ m.get(k));
//System.out.println(iter.next()+"="+
m.get(iter.next()));
//因為指針判斷下一個有沒有值 iter.next是當前對象
但是 m.get(iter.next())是下一個值
}
public static void iteratorMap(Map m){
Iterator
i=m.entrySet().iterator();

while(i.hasNext()){//只遍歷一次,速度快
Map.Entry
e=(Map.Entry)i.next();

System.out.println(e.getKey()+"="+e.getValue());

//System.out.println(e.setValue(""));//返回value的值
}
}

『玖』 java怎麼獲取map的key

map迭代,需要使用map的key,問度娘後記錄使用方法如下,希望更多人能學習到.

public class MyUtil1 {
public static void
iteratorMap1(Map m) {
Set
set=m.keySet();//用介面實例介面
Iterator iter =
set.iterator();
while (iter.hasNext())
{//遍歷二次,速度慢
String
k=(String)iter.next();

System.out.println(k +"="+ m.get(k));
//System.out.println(iter.next()+"="+
m.get(iter.next()));
//因為指針判斷下一個有沒有值 iter.next是當前對象
但是 m.get(iter.next())是下一個值
}
public static void iteratorMap(Map m){
Iterator
i=m.entrySet().iterator();

while(i.hasNext()){//只遍歷一次,速度快
Map.Entry
e=(Map.Entry)i.next();

System.out.println(e.getKey()+"="+e.getValue());

//System.out.println(e.setValue(""));//返回value的值
}
}

『拾』 java里老是說key,這是什麼東東

容器中的key嗎就是,key-value這兩個東東在容器中,key就是你對象的一個命名,value就是對象本身。相當與字典一樣從key找value。

熱點內容
玩qq三國要什麼樣的電腦配置 發布:2024-09-20 00:50:57 瀏覽:445
樹莓派zero編譯驅動 發布:2024-09-20 00:50:56 瀏覽:483
上傳文件文件夾找不到 發布:2024-09-20 00:26:32 瀏覽:915
承台箍筋加密區 發布:2024-09-20 00:26:31 瀏覽:228
筆記本什麼配置能流暢運行cf 發布:2024-09-20 00:14:19 瀏覽:952
實測華為編譯器 發布:2024-09-19 23:50:52 瀏覽:822
linux匯總 發布:2024-09-19 23:46:39 瀏覽:453
阿里雲伺服器環境搭建教程 發布:2024-09-19 23:21:58 瀏覽:837
黃色文件夾圖標 發布:2024-09-19 23:19:22 瀏覽:684
mysql資料庫導出導入 發布:2024-09-19 23:00:47 瀏覽:183