導航:首頁 > 編程語言 > javamap兩個

javamap兩個

發布時間:2022-09-06 23:24:36

『壹』 如何合並兩個java Map

API中定義了一個方法,忘了叫啥了好像是putAll(),
map1.putAll(map2)

『貳』 java 怎麼讓兩個map的數據保持一致

如果兩個MAP在內存中有自己獨立的空間,那麼可以為map添加自定義事件,當其中一個MAP內容發生變化時,自動更新另一個MAP.
但是這樣沒有太大的意義..因為在一定時間內,內容完全相同的MAP完全可以由空間相同(既同一內存空間,變數引用相同)的MAP代替且效率更高!
如果有特殊用途的情況,可以考慮添加自定義事件後,做延遲更新操作.

『叄』 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裡面加入兩個鍵值對

//因為map里不能有重復的鍵,所以想要實現這種,那麼就只能將一個一個的map放到集合中
//如下:
packagetestweb;

importjava.util.ArrayList;
importjava.util.HashMap;
importjava.util.List;
importjava.util.Map;

publicclassTestCase{

publicstaticvoidmain(String[]args)throwsException{
newTestCase().test();
}

privatevoidtest(){
List<Map<String,Object>>list=newArrayList<Map<String,Object>>(2);
Map<String,Object>map1=newHashMap<String,Object>(2);
map1.put("name","Paraguay");
map1.put("value",6459.721);
list.add(map1);

map1=newHashMap<String,Object>(2);
map1.put("name","Qatar");
map1.put("value",1749.713);
list.add(map1);
System.out.println(list);
}

}
//輸出結果:[{value=6459.721,name=Paraguay},{value=1749.713,name=Qatar}]

『伍』 java中map集合能不能存另兩個集合

java中map集合能放另外兩個集合,主要是使用map的putall集合,加入另一個集合,如下代碼:

importjava.util.HashMap;
importjava.util.Map;

publicclassceshi{

publicstaticvoidmain(String[]args){

Mapmap1=newHashMap();
map1.put("key1","values1");
Mapmap2=newHashMap();
map2.put("key2","values2");

Mapmap3=newHashMap();//將前兩個map放入map3中
map3.putAll(map1);//加入map1
map3.putAll(map2);//加入map2
System.out.println(map3);//輸出結果
}

}

運行結果如下:

『陸』 求教大神,如何把兩個map集合里的數據放到一個map里,求實現過程.本人java菜鳥

public class Demo1 {
public static void main(String[] args) {
Map map1 = new HashMap();
map1.put("key1", "values1");
Map map2 = new HashMap();
map2.put("key2", "values2");
map1.putAll(map2);
System.out.println(map1);
返回值是{key2=values2, key1=values1}

(6)javamap兩個擴展閱讀

Java具有簡單性、面向對象、分布式、健壯性、安全性、平台獨立與可移植性、多線程、動態性等特點。Java可以編寫桌面應用程序、Web應用程序、分布式系統和嵌入式系統應用程序等。Java,是由Sun Microsystems公司於1995年5月推出的Java程序設計語言和Java平台的總稱。

用Java實現的HotJava瀏覽器(支持Java applet)顯示了Java的魅力:跨平台、動態的Web、Internet計算。從此,Java被廣泛接受並推動了Web的迅速發展,常用的瀏覽器現均支持Java applet

Java看起來設計得很像C++,但是為了使語言小和容易熟悉,設計者們把C++語言中許多可用的特徵去掉了,這些特徵是一般程序員很少使用的。例如,Java不支持go to語句,代之以提供break和continue語句以及異常處理。

Java還剔除了C++的操作符過載(overload)和多繼承特徵,並且不使用主文件,免去了預處理程序。因為Java沒有結構,數組和串都是對象,所以不需要指針。Java能夠自動處理對象的引用和間接引用,實現自動的無用單元收集,使用戶不必為存儲管理問題煩惱,能更多的時間和精力花在研發上。

本書以進銷存管理系統、企業內部通信軟體、企業人事管理系統、酒店管理系統、圖書館管理系統、企業快信、欣想電子商城、企業門戶網站、BBS系統和手機網路游戲等10個實際項目開發程序為案例,從軟體工程的角度出發,按照項目的開發順序,系統、全面地介紹了J2SE、J2EE和J2ME項目的開發流程。

『柒』 java 兩個Map進行比較

跟你說下思路:
第一步,循環Map1的key,取得key;
第二部,根據key取得對應的List;
第三部,循環List,取出List中的每一項SoftWare跟另外一個Map比較。
如果另外一個Map中沒有則創建一個LIst,並加入到該List中,最後將該List放入Map3中。

代碼:
import java.util.*;
public class Test2
{
public static void main(String[] args)
{
Map<String,List<SoftWare>> map1 = new HashMap<String,List<SoftWare>>();
Map<String,List<SoftWare>> map2 = new HashMap<String,List<SoftWare>>();
Map<String,List<SoftWare>> map3 = new HashMap<String,List<SoftWare>>();
List<SoftWare> list1 = new ArrayList<SoftWare>();
list1.add(new SoftWare("http://abc.com"));
list1.add(new SoftWare("http://abcd.com"));
list1.add(new SoftWare("http://abcde.com"));
map1.put("Type1",list1);
List<SoftWare> list2 = new ArrayList<SoftWare>();
list2.add(new SoftWare("http://abc.com"));
list2.add(new SoftWare("http://abxd.com"));
list2.add(new SoftWare("http://abgde.com"));
map2.put("Type1",list2);
for (Iterator<String> it=map1.keySet().iterator();it.hasNext() ; )
{
String key = it.next();
List<SoftWare> list = map1.get(key);
List<SoftWare> list3 = new ArrayList<SoftWare>();
for (SoftWare sw : list)
{
if (!IsInMap(sw,map2))
{
list3.add(sw);
}
}
if (list3.size() > 0)
{
map3.put(key,list3);
}
}
System.out.println("downloadLink不一致的元素:");
for (Iterator<String> it=map3.keySet().iterator();it.hasNext() ; )
{
String key = it.next();
List<SoftWare> list = map3.get(key);
System.out.println("軟體類型:" + key);
System.out.println("該軟體類型下的軟體:");
for (SoftWare sw : list)
{
System.out.println(sw.getDownloadLink());
}
}
}
public static boolean IsInMap(SoftWare sw,Map<String,List<SoftWare>> map) {
for (Iterator<String> it=map.keySet().iterator();it.hasNext() ; )
{
String key = it.next();
List<SoftWare> list = map.get(key);
for (SoftWare sws : list)
{
if (sws.getDownloadLink().equals(sw.getDownloadLink()))
{
return true;
}
}
}
return false;
}
}
class SoftWare
{
private String downloadLink;
public void setDownloadLink(String downloadLink) {
this.downloadLink = downloadLink;
}
public String getDownloadLink() {
return this.downloadLink;
}
SoftWare(String downloadLink) {
this.downloadLink = downloadLink;
}
SoftWare() {
}
}

『捌』 java如何寫兩個map比較

Map map1 = new HashMap();
Map map2 = new HashMap();
map1.put("a", "aa");
map1.put("b", "bb");
map1.put("c", "cc");
map2.put("1", "11");
map2.put("b", "22");
map2.put("3", "33");

Iterator it = map1.keySet().iterator();
while(it.hasNext()){
Object key = it.next();
if(map2.containsKey(key)){
System.out.println(map1.get(key));
System.out.println(map2.get(key));
}
}

閱讀全文

與javamap兩個相關的資料

熱點內容
c51單片機特殊寄存器的原理 瀏覽:576
閃耀永恆特利加密鑰 瀏覽:758
如何誇程序員 瀏覽:776
天津期貨python招聘 瀏覽:263
單片機機器語言寫的程序 瀏覽:548
韓國直播軟體app叫什麼名 瀏覽:916
軍營訓練不聽教官的命令 瀏覽:258
v開頭的音樂播放器是什麼APP 瀏覽:117
單片機是怎麼做出來的 瀏覽:315
博圖怎麼作為opc伺服器 瀏覽:100
編譯做題軟體 瀏覽:293
橋梁檢測pdf 瀏覽:685
化解壓力的一種方法 瀏覽:680
路由器和DSN伺服器有什麼區別 瀏覽:548
android伸縮控制項 瀏覽:851
androidm3u8緩存 瀏覽:236
imphp開源知乎 瀏覽:708
清除網路通配符dos命令 瀏覽:839
鴻蒙系統怎麼快速換回安卓 瀏覽:714
pdf綠色虛擬列印機 瀏覽:215