Java中两个Map的加减

16 篇文章 0 订阅
7 篇文章 0 订阅
package com.map;

import java.util.Iterator;
import java.util.Map;
import java.util.HashMap;
import java.util.Set;

public class AddMap {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
        Map<String,Double> AMap = new HashMap<String,Double>(){{
        	put("A",1.0);
        	put("B",2.0);
        	put("C",-3.0);
        }};
        
        Map<String,Double> BMap = new HashMap<String,Double>(){{
        	put("B",-2.0);
        	put("C",3.0);
        	put("D",6.0);
        }}; 
        
        Map<String,Double> CMap = addWeight(AMap,BMap);
        
        for(String s : CMap.keySet())
        {
        	System.out.println(s + " = " + CMap.get(s));
        }
        
	}
	
	public static Map<String,Double> addWeight(Map<String,Double> goldMap,Map<String,Double> preMap)
	{
		 Map<String,Double> addMap = new HashMap<String,Double>();
	     
		 for(String s : preMap.keySet())
	     {
	    	 if(goldMap.containsKey(s))
	    	 {		    	 
	    		 addMap.put(s, (goldMap.get(s) + preMap.get(s)));
		    	 
		     } else
		     {		    	
		    	 addMap.put(s, preMap.get(s));
		     }
	     }
	     for(String str : goldMap.keySet())
	     {
	    	 if(!preMap.containsKey(str))
	    	 {
	    		addMap.put(str, goldMap.get(str)); 
	    	 }
	     }
	     
	     //删除值为空的项	
	     //集合类的都不能在循环的时候删除,因为删除元素后集合发生改变继而不能循环了
	     //这种删除方式以后不要再用了,严重出错
	     /*for(String key : cutMap.keySet()) 
	     {
	    	 Double value = cutMap.get(key);
	    	 if(value == 0.0)
	    	 {
	    		 cutMap.remove(key);
	    	 }
	     }*/
	     
	    Set mapset = addMap.entrySet();
        Iterator iterator = mapset.iterator();
        
        while(iterator.hasNext())
        {
            Map.Entry mapEntry = (Map.Entry)iterator.next();
 
            Double value =(Double)mapEntry.getValue();
            
            if(value == 0.0)
            {
            	iterator.remove();
            }
 
        }
	     
	     return addMap;
	}
	/**
	 * 两个Map相减
	 * @param goldMap
	 * @param preMap
	 * @return
	 */
	public static Map<String,Double> cutWeight(Map<String,Double> goldMap,Map<String,Double> preMap)
	{
		 Map<String,Double> cutMap = new HashMap<String,Double>();
	     for(String s : preMap.keySet())
	     {
	    	 if(goldMap.containsKey(s))
	    	 {		    	 
		    	 cutMap.put(s, (goldMap.get(s)-preMap.get(s)));
		    	 
		     } else
		     {		    	
		    	 cutMap.put(s, -(preMap.get(s)));
		     }
	     }
	     for(String str : goldMap.keySet())
	     {
	    	 if(!preMap.containsKey(str))
	    	 {
	    		cutMap.put(str, goldMap.get(str)); 
	    	 }
	     }
	     
	   //删除值为空的项	     
	    
        Iterator iterator = cutMap.entrySet().iterator();
        
        while(iterator.hasNext())
        {
            Map.Entry mapEntry = (Map.Entry)iterator.next();
 
            Double value =(Double)mapEntry.getValue();
            
            if(value == 0.0)
            {
            	iterator.remove();
            }
 
        }
		     
	     return cutMap;
	}


}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
package com.MangoMap; //import android.app.Activity; import com.google.android.maps.MapActivity; import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.os.Bundle; import android.view.View; import android.widget.ListView; import android.widget.SimpleAdapter; import java.text.Collator; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; //MapView Com import com.google.android.maps.MapView; import com.google.android.maps.MapController; import com.google.android.maps.GeoPoint; //import com.google.android.maps. public class MangoMap extends MapActivity { /** Called when the activity is first created. */ private MapView mpv; private MapController mpc; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //地图 mpv = (MapView) findViewById(R.id.map); mpv.setTraffic(true); mpv.setClickable(true); mpv.setScrollContainer(true); mpc = mpv.getController(); GeoPoint gp = new GeoPoint((int) (23.05320 * 1000000), (int) (113.155550 * 1000000)); //地理坐标 mpc.animateTo(gp); mpc.setZoom(15); //mpc. // } @Override protected boolean isRouteDisplayed() { return false; } } //----------------- <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <!-- <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> --> <com.google.android.maps.MapView android:id="@+id/map" android:layout_width="fill_parent" android:layout_height="fill_parent" android:enabled="true" android:clickable="true" android:apiKey="YOUR API key" /> <Button android:text="@+id/Button01" android:id="@+id/Button01" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button> </LinearLayout> //--------------------- <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.MangoMap" android:versionCode="1" android:versionName="1.0"> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.INTERNET" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <uses-library android:name="com.google.android.maps" /> <activity android:name=".MangoMap" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> <uses-sdk android:minSdkVersion="3" /> </manifest>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值