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

keyjava

發布時間: 2022-09-14 16:24:32

A. java怎麼通過key值獲取value值

你說的是map吧 存值是map.put(key,value);
取值map.get(key)
例如Map<String String> map = new HashMap<String String>();
map.put("1","123");
String s = map.get("1");
System.out.println(s);
//列印結果
123

B. 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。

C. java類,用key

HashMap無序,所以肯定要藉助其他數據結構,上面說的sort map簡直是扯淡,sort是對List的,Map是和List不同的介面,完全沒關系。
你的key是什麼類型
value是什麼類型,按key的hashcode還是value的hashcode排列,不說清楚這個排法和數據結構完全不同

D. java用map通過value能找到key嗎

java中規定map集合中key值必須唯一,value值可以重復,所以通過value來找key可能會出現一個value對應多個key的情況,API中也沒有通過value尋找key的方法,所以只能通過自己的方法來獲得key值

Map<Integer,String>map=newHashMap<Integer,String>();
map.put(1,"一");
map.put(2,"二");
map.put(3,"三");
map.put(4,"二");
Stringk="二";
Set<Integer>set=map.keySet();
for(Integerstr:set){
if(k.equals(map.get(str))){
System.out.println(str);
}
}

E. java中的map怎麼根據key值修改value值

java:Map param = new HashMap();

param.put("a","3333");

System.out.println(param.get("a")); //3333

if(param.containsKey("a")){

param.put("a", "565");}

System.out.println(param.get("a"));//565

map存值就類似於往一個瓶子中放東西,而key就是標簽,value就是其中放的東西,而取值的時候就相當於取東西,要知道所要取的東西的標簽才可以取東西,也就是map.get("key")。

key value根據關鍵字取值

如果輔以Real-Time Search Engine(實時搜索引擎)進行復雜條件檢索、全文檢索,就可以替代並發性能較低的MySQL等關系型資料庫,達到高並發、高性能,節省幾十倍伺服器數 量的目的。以MemcacheDB、Tokyo Tyrant為代表的key-value分布式存儲,在上萬並發連接下,輕松地完成高速查詢。而MySQL,在幾百個並發連接下,就基本上崩潰了。

以上內容參考:網路-Key-Value

F. java怎麼獲取map的key

java 獲取map中所有的key和value值

java.util.Iterator 對 collection 進行迭代的迭代器。

java.util.Iterator it = map.entrySet().iterator();
while(it.hasNext()){
java.util.Map.Entry entry = (java.util.Map.Entry)it.next();
entry.getKey() //返回對應的鍵
entry.getValue() //返回對應的值
}

以前遍歷Map key-value比較習慣的方式是先獲取Map中的所有key值,
然後根據key,依次從Map中去數據,基本方式如下:

Map<String,String> testData = new HashMap<String, String>();

Set<String> keys = testData.keySet();
for(String key :keys){
System.out.println(key+" "+testData.get(key));
}

上述其中是第一種方法,原來一直用上述方法主要是自己有點懶,有了一種方法後就覺得夠用的了,今天看源碼,發現還Map介面中還有一個Entry<K,V>的介面,對應的還有一個 Set<Map.Entry<K, V>> entrySet();方法。
也就是說其實Map中的每條key-value數據對應著一個Entry,這樣的話遍歷Map其實就是要取出每個Entry,也就有了第二種遍歷方法:

Set<Entry<String, String>> entries = testData.entrySet();
for (Entry<String, String> entry : entries) {
System.out.println(entry.getKey()+":"+entry.getValue());
}

當少量的數據時,上述兩種方法的效率是差不多的,當數據比較多時,第二種還是要比第一種快。

當然上述說的兩種遍歷針對的情況是遍歷出key-value,如果是只想遍歷key或value,大可不必用以上的方法了,Map中提供了Set<K> keySet()和Collection<V> values()。

G. Json數據解析key為Java關鍵字怎麼辦

沒關系的呀,json的本質是String,java關鍵字主要是限制你不能用來定義變數名,但是定義一個String是不受限制的

H. 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()。

I. java里老是說key,這是什麼東東

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

J. 怎麼判斷key是否在map中存在java

map.containsKey 判斷是否存在key ,建議常常看java API文檔.

熱點內容
微信里的密碼和賬號在哪裡 發布:2025-01-11 22:46:04 瀏覽:750
java字元串個數統計 發布:2025-01-11 22:45:05 瀏覽:541
完美國際2捏臉資料庫 發布:2025-01-11 22:45:04 瀏覽:279
php淘寶互刷平台源碼 發布:2025-01-11 22:43:49 瀏覽:215
劍俠情緣緩存怎麼清理 發布:2025-01-11 22:33:56 瀏覽:316
win7旗艦版怎麼設置密碼 發布:2025-01-11 22:21:09 瀏覽:144
被害人訪問 發布:2025-01-11 22:06:24 瀏覽:366
朋友圈上傳長視頻方法 發布:2025-01-11 22:01:41 瀏覽:357
我的世界ice伺服器被炸罰款 發布:2025-01-11 21:54:36 瀏覽:725
linuxphpini配置 發布:2025-01-11 21:54:35 瀏覽:481