导航:首页 > 编程语言 > 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两个相关的资料

热点内容
android伸缩控件 浏览:851
androidm3u8缓存 浏览:234
imphp开源知乎 浏览:706
清除网络通配符dos命令 浏览:837
鸿蒙系统怎么快速换回安卓 浏览:712
pdf绿色虚拟打印机 浏览:213
androidtab框架 浏览:147
java转php的时间戳 浏览:639
编译libstdc依赖 浏览:659
清算法人与原法人的区别 浏览:410
家庭装修下载什么app软件 浏览:575
美食博主用什么app拍视频 浏览:816
ipone手机如何加密微信 浏览:357
自来水加密阀阀帽 浏览:438
华为交换机dhcp配置命令 浏览:319
androidbitmap缩小 浏览:275
单片机串口控制灯 浏览:88
大讯云服务器安装视频 浏览:788
华为算法领先世界 浏览:658
linux路由重启 浏览:570