2 u011359326 u011359326 于 2016.02.14 15:22 提问

java中为什么以下三个map 不用map1 map2 map3 加以区分 ???

public List> getTripListData() {

    Map<String, Object> map = new HashMap<String, Object>();

    map.put("img", R.drawable.moto);
    map.put("name", "摩托罗拉(motorola)XT711 3G手机");
    map.put("money", "2699元");
    map.put("zhe", "9折");
    list.add(map);

    map = new HashMap<String, Object>();
    map.put("img", R.drawable.iphone);
    map.put("name", "iPhone4 16G版");
    map.put("money", "5880元");
    map.put("zhe", "8.5折");
    list.add(map);

    map = new HashMap<String, Object>();
    map.put("img", R.drawable.samsung);
    map.put("name", "三星(SAMSUNG)i9003 3G手机");
    map.put("money", "3099元");
    map.put("zhe", "9折");
    list.add(map);

    return list;
}

为什么以上三个map
不用map1 map2 map3 加以区分 ???

3个回答

xinmengdie01
xinmengdie01   2016.02.14 15:47
已采纳

因为map在使用之前都重新声明了,就是重新new了,只占用内存一个,若用map1 map2 map3 区分,就会占用内存3个.产生不必要的内存.我的理解是这样的...

wanzhix
wanzhix   2016.02.14 16:03

map每次使用在这里没必要重新new,key都相同,value会直接替换,直接只用一个map就好了

a719195733
a719195733   2016.02.14 16:08

你可以写map1,map2,map3完全没问题,首先一个map,就是一个变量,变量map是放在栈里的,存的是new HashMap()的引用,new HashMap()
是放在堆里的,map在put完之后放入List了,这时变量map已经没用了,再给赋值一个new HashMap()可以重复利用,这样可以简洁代码,规范
,多次声明map1,map2map3显得多此一举。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
ThinkPHP运算符 与 SQL运算符 对照表
ThinkPHP Where 条件中使用表达式 ThinkPHP运算符 与 SQL运算符 对照表
java-echart.js柱状图、饼状图、折线图
java-echart.js柱状图、饼状图、折线图 /** * 柱状图 * @param classRoom * @param req * @param resp * @param model * @return */ @RequestMapping(value = "/zhuzhuangtu") public String zhuzhuangtu(ClassRoom classRoom ,HttpServletRequest req,HttpServletResponse resp,Model model){ List<Map<String,Object>> maps = new ArrayList<Map<String,Object>>(); Map<String,Object> map = new HashMap<>(); map.put("name", "山东"); map.put("value", 200); map.put("id", 1); Map<String,Object> map1 = new HashMap<>(); map1.put("name", "江苏"); map1.put("value", 400); map1.put("id", 2); Map<String,Object> map2 = new HashMap<>(); map2.put("name", "北京"); map2.put("value", 400); map2.put("id", 3); Map<String,Object> map3 = new HashMap<>(); map3.put("name", "上海"); map3.put("value", 150); map3.put("id", 4); maps.add(map); maps.add(map1); maps.add(map2); maps.add(map3); model.addAttribute("maps", maps); return "manage/zhuzhuangtu"; }
std::map
<br /> <br /> <br />1. map中的元素其实就是一个pair.<br />2. map的键一般不能是指针, 比如int*, char*之类的, 会出错. 常用的就用string了,int也行.<br />3. map是个无序的容器, 而vector之类是有序的. 所谓有序无序是指放入的元素并不是按一定顺序放进去的, 而是乱序, 随机存放的(被映射后近似随机存放).所以遍历的时候有些效率差别.<br />4. 判断有没有找到该键的内容可以这样: <br />std::map<std::st
wav转map3
这几天录了音但文件都很大,手机的空间有限才小1G,又苦于没钱      在网上搜了一下,可以将wav转为map3格式,我们都知道map3就小多了,原来这个好工具就一直在我身边,用系统自带的“录音机”,打开“开始”-->“程序”-->“娱乐”--->“录音机”。      1、从“文件”中打开一个文件"录音12.wav",注意到它的大小了没,差不多180M呀。 2、打开文件后,选择“文
android mars视频代码 Tea_marsListActivity
ArrayList<HashMap<String,String>> list = new ArrayList<HashMap<String,String>>(); HashMap<String,String> map1 = new HashMap<String,String>(); HashMap<String,String> map2 = new HashMap<String,String>(); HashMap<String,String> map3 = new HashMap<String,String>(); map1.put("user_name", "zhangsan"); map1.put("user_ip", "192.168.2.79"); map2.put("user_name", "lisi"); map2.put("user_ip", "192.168.2.80"); map3.put("user_name", "wangwu"); map3.put("user_ip", "192.168.2.81"); list.add(map1); list.add(map2); list.add(map3); SimpleAdapter adapter = new SimpleAdapter(this, list, R.layout.users, new String[]{"user_name","user_ip"}, new int[]{R.id.user_name,R.id.user_ip}); this.setListAdapter(adapter);
initUndistortRectifyMap源码解析
void cv::initUndistortRectifyMap( InputArray _cameraMatrix, InputArray _distCoeffs, InputArray _matR, InputArray _newCameraMatrix, Size size
java 中map遍历的四种方法和优缺点
/** * 在for-each循环中使用entries来遍历 * 这是最常见的并且在大多数情况下也是最可取的遍历方式。在键值都需要时使用 * 如果遍历的是一个空的map,会报数组越界 ,java5引入,不兼容老版本 * @param map */ public void methodOne(Map map){ for (Map.Entry entry : map.entrySet()
Java MAP三种遍历方法
package sean; import java.util.*; public class MapTraverse { public static void main(String[] args) { String[] str = {"I love you", "You love he", "He love her", "She love me"}; Map m = new Hash
C++ Map传递参数
map可以被看做是普通变量一样可以直接赋值,同时map也可以看做普通变量一样在函数间以值传递或者以指针传递方式传递。 下面是一个小小的例子: #include #include #include using namespace std; void translate(map temp_map);//map直接作为参数传递 void translate(map *pMap);//
const map的初始化及使用
std::map::value_type map_init_data[2] = {   map::value_type(1, 1),   map::value_type(2, 2) }; const map a_map(map_init_data, map_init_data + 2); 注意构造函数的参数是用[begin, end)定义的,第二个参数应该是首地址加数组