map.get() 到的引用变量能不能直接修改?
public static void main(String[] args) {
    Map<String, List<String>> map = new HashMap<>();
    map.put("str1", Arrays.asList("aa","bb"));
    System.out.println(map.get("str1"));
    map.get("str1").add("cccc");  // 1
    System.out.println(map.get("str1"));

    List<String> list = new ArrayList<>(map.get("str1"));
    list.add("dddd"); // 2
    map.put("str1",list);
    System.out.println(map.get("str1"));

    map.get("str1").add("cccc"); // 3
    System.out.println(map.get("str1"));
  }

目前这段代码执行到 1 会报错;
但是把1注释掉就能正常运行(1和3是一样的),不知道为什么先2再3 就没问题了
用的java8,是因为一开始的map里的value和后来更新过的有什么不一样???

1个回答

看看这个:https://www.cnblogs.com/liuyh17211/p/3250365.html

Arrays.asList返回的List与new ArrayList生成的List是有区别的。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
groovy中map取值问题

我输出map得到的是 [enterprisecode:xx, usercode:xx, username:xx, password:xx, defaultgroupid:xx, phonenumber:null, languagecode:CN, erpenterprisecode:null, erpusercode:null, year:2010, month:201012, today:2010/12/06] 但我用map.get("languagecode") 和 map.usercode得到的都是null,请问是什么情况 我自己定义的map类型[usercode:'xx']都能用map.usercode显示出来,这个是不明白

java批量数据导出多个excel,为什么老是只生成一个excel文件

public void exportexcel(HttpServletRequest request, HttpServletResponse response) throws Exception { // 为模板中变量赋值 // 传递模板地址和要操作的页签 ExcelExp excel = new XssExcelExp("../../excel/volunteer.xlsx", 0); VolunteerFormMap volunteerFormMap = findHasHMap(VolunteerFormMap.class); volunteerFormMap.put("mapper_id","VolunteerMapper.findvolunteer"); List<Map<String, Object>> lists = baseService.findByAll(volunteerFormMap); for (Map<String, Object> map2 : lists) { Map<String, String> map1 = new HashMap<String, String>(); map1.put("name", (String) map2.get("name")); map1.put("gender", (String) map2.get("gender")); map1.put("education", (String) map2.get("education")); map1.put("politicalAff", (String) map2.get("political_aff")); map1.put("workUnit", (String) map2.get("work_unit")); map1.put("unitAddress", (String) map2.get("unit_address")); map1.put("address", (String) map2.get("address")); map1.put("phoneNumber", (String) map2.get("phoneNumber")); map1.put("idNumber", (String) map2.get("id_number")); map1.put("hobby", (String) map2.get("hobby")); map1.put("contactInfo", (String) map2.get("contact_info")); map1.put("introducer", (String) map2.get("introducer")); map1.put("partinTime", (String) map2.get("partin_time")); excel.replaceExcelData(map1); // 导出,此处只封装了浏览器下载方式 // 调用downloadExcel,返回输出流给客户端 String fileName = (String) map2.get("name") + ".xlsx"; excel.downloadExcel(response, fileName); } } public void downloadExcel(HttpServletResponse response, String filaName) throws IOException { String encodeFileName = URLEncoder.encode(filaName, "UTF-8"); response.addHeader("Content-Disposition", "attachment;filename=" + encodeFileName); //response.setHeader("Accept-Ranges", "bytes"); ServletOutputStream out = response.getOutputStream(); xssWb.write(out); out.flush(); out.close(); }

很简单的map的取值的问题。。。错误找不出来

package com.sxt.test0; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; public class Test0 { public static void main(String[] args) { Map<Integer, String> map = new HashMap<>(); map.put(1,"a"); map.put(2,"b"); map.put(3,"c"); Iterator<Map.Entry<Integer,String>> it=map.entrySet().iterator(); while(it.hasNext()){ Map.Entry<Integer,String> entry=it.next(); System.out.print("key值为:"+entry.getKey()+","+"value值为:"+entry.getValue());         }   } } ![图片说明](https://img-ask.csdn.net/upload/201709/20/1505900904_733382.png) ``` 真是不知道错在哪里?一直说是少;号要不是少{},但是检查了好几次都没有问题啊 ```

for each循环变量赋值问题

对于普通类型来讲 ``` public void test() { List<String> strList = new ArrayList<String>(); strList.add("乐视网"); strList.add("财经网"); strList.add("凤凰网"); for(String str:strList){ if("乐视网".equals(str)){ str = "腾讯网"; } } System.out.println(strList); } ``` 这段代码输出的结果是: [乐视网, 财经网, 凤凰网] 可见循环计数器只是一个中间变量,它仅仅保存了当前正在遍历的集合元素,因此对其赋值并不会改变集合元素本身。 但是,对于map、对象类型来讲 ``` public void test() { List<Map<String,Object>> stringList = new ArrayList<Map<String,Object>>(); Map<String,Object> map = new HashMap<String, Object>(); map.put("leshi", "乐视网"); map.put("caijing", "财经网"); map.put("fenghuang", "凤凰网"); stringList.add(map); for(Map<String,Object> m:stringList){ if("乐视网".equals(m.get("leshi"))){ m.put("leshi", "乐视体育"); } } System.out.println(stringList); } ``` 这段代码输出的结果则为: [{fenghuang=凤凰网, caijing=财经网, leshi=乐视体育}] 显然原来的map的value被改变了。 这是为什么呢?

关于AtomicInteger变量的一些疑问

本人最近写了一段代码,用到了AtomicInteger对这个变量,但是期待的结果与代码的实际运行 结果相差好大,现将代码奉上,求各位大牛给下解决方案。 class IDGeneration { private final static ConcurrentHashMap<Long, AtomicInteger> idMap = new ConcurrentHashMap<Long, AtomicInteger>(); private static final long baseTime = 1462377600000L; private Lock lock; IDGeneration() { lock = new ReentrantLock(); } @SuppressWarnings("unused") public Long generateRelativeIncrementUniqueId(String flag) { String dateString = GengratedUnqueId.formatDate(new Date(), GengratedUnqueId.PATTERN); Long currentTime = (System.currentTimeMillis() - baseTime); AtomicInteger queueId = new AtomicInteger(0); int i = 0; Long tempValue = null; lock.lock(); try { queueId = idMap.get(currentTime); if (queueId == null) { queueId = new AtomicInteger(0); idMap.clear(); idMap.put(currentTime, queueId); tempValue = (currentTime << 5 | queueId.get()); } else { queueId.getAndIncrement(); idMap.put(currentTime, queueId); tempValue = (currentTime << 5 | queueId.get()); } } finally { lock.unlock(); } return tempValue; return null; } } 这是测试代码: public static void main(String[] args) throws Exception { static ConcurrentHashMap<Long, String> map = new ConcurrentHashMap<Long, String>(); final IDGeneration idGeneration = new IDGeneration(); for (int i = 0; i < 100; i++) { Thread thread = new Thread(new Runnable() { @Override public void run() { long value = idGeneration .generateRelativeIncrementUniqueId(); map.put(value, ""); } }); thread.start(); } TimeUnit.SECONDS.sleep(5); System.out.println("map.size===" + map.size()); }

老是获取到position的最后一个值

不管按哪个按钮,上一次老是获取到position的第一个值,显示"苹果",然后按照网上的解决办法改了之后,老是获取到position的最后一个值,显示"运行" ![图片说明](https://img-ask.csdn.net/upload/201705/11/1494472503_511184.png) ``` package com.example.exer; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.app.AlertDialog; import android.app.ListActivity; import android.content.Context; import android.content.DialogInterface; import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends ListActivity { private static final String TAG = "MainActivity"; private List<Map<String, Object>> mdata; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //setContentView(R.layout.activity_main); ListView mListView=getListView(); mdata = data(); mListView.setAdapter(new MyAdapter(this,mdata)); mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> l, View v, int position, long id) { Log.i(TAG, (String)mdata.get(position).get("title")); Toast.makeText(MainActivity.this, (String)mdata.get(position).get("title"), 1000).show(); } }); } class MyAdapter extends BaseAdapter{ private Context context; Hodler hodler =null; private LayoutInflater minflater; private ArrayList<Map<String,Object>> datalist; public MyAdapter(Context context,List<Map<String,Object>> datalist) { this.context=context; this.minflater = LayoutInflater.from(context); this.datalist=(ArrayList<Map<String,Object>>)datalist; } @Override public int getCount() { // TODO Auto-generated method stub return datalist.size(); } @Override public Object getItem(int position) { // TODO Auto-generated method stub return datalist.get(position); } @Override public long getItemId(int position) { // TODO Auto-generated method stub return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { if(convertView == null){ hodler = new Hodler(); convertView= minflater.inflate(R.layout.mylist, null); hodler.img = (ImageView) convertView.findViewById(R.id.img); hodler.title = (TextView) convertView.findViewById(R.id.title); hodler.info = (TextView) convertView.findViewById(R.id.info); hodler.button = (Button) convertView.findViewById(R.id.button); convertView.setTag(hodler); }else{ hodler = (Hodler)convertView.getTag(); } hodler.img.setBackgroundResource((Integer) mdata.get(position).get("img")); hodler.title.setText((CharSequence) mdata.get(position).get("title")); hodler.info.setText((CharSequence) mdata.get(position).get("info")); //hodler.button.setTag(position); hodler.positio=position; hodler.button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //showdialog((int)hodler.button.getTag()); showdialog(hodler.positio); } }); return convertView; } class Hodler { public ImageView img; public TextView title; public TextView info; public Button button; int positio;//增加一个变量记录每个item的值 } } public void showdialog(int position) { new AlertDialog.Builder(this).setTitle("提示信息").setMessage("你点击的标题是: " +(String)mdata.get(position).get("title")) .setPositiveButton("确定", new DialogInterface.OnClickListener(){ @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(MainActivity.this, "确定", Toast.LENGTH_SHORT).show(); setResult(RESULT_OK); finish(); } }).setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }).show(); } public List<Map<String, Object>> data() { List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); Map<String, Object> map = new HashMap<String, Object>(); map.put("title", "苹果"); map.put("info", "apple"); map.put("img", R.drawable.ic_launcher); list.add(map); map = new HashMap<String, Object>(); map.put("title", "书"); map.put("info", "book"); map.put("img", R.drawable.ic_launcher); list.add(map); map = new HashMap<String, Object>(); map.put("title", "电脑"); map.put("info", "computer"); map.put("img", R.drawable.ic_launcher); list.add(map); map = new HashMap<String, Object>(); map.put("title", "对话"); map.put("info", "dialog"); map.put("img", R.drawable.ic_launcher); list.add(map); map = new HashMap<String, Object>(); map.put("title", "运行"); map.put("info", "run"); map.put("img", R.drawable.ic_launcher); list.add(map); return list; } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } } ```

JAVA软引用,使用System.gc()回收引用的对象

``` public class SoftReferenceTest { private static List<Byte[]> list = new ArrayList<Byte[]>();; private static SoftReference<SoftReferenceTest> sr; public static void main(String[] args) { // 软引用 // 当内存溢出的时候,应用的对象会被 回收 sr = new SoftReference<SoftReferenceTest>(new SoftReferenceTest()); System.out.println("sr : " + sr.get()); sr= null; System.gc(); // 产生MMO后可以看到finalize的执行,即“软引用,当内存溢出的时候,应用的对象会被 回收” // Byte[] bytes = null; // for (int i = 0; i < 50000; i++) { // bytes = new Byte[1024 * 1024]; // list.add(bytes); // } } @Override protected void finalize() throws Throwable { System.out.println("SoftReferenceTest ... finalize ... exec..."); System.out.println("sr : " + sr.get()); } } ``` 为什么finalize的第二个System.out.println没有打印?

发送邮件 类和变量都正确,就是接收不到。是哪里写错了吗?

public void sendCodeByEmail(String email, String account, String code) { // 验证码生成 String vcode = ""; for (Integer i = 0; i < 4; i++) { int in = (int) (Math.random() * 10); if (in == 0) { in = 1; } vcode = vcode + in; } Map<String, Object> map = new HashMap<String, Object>(); map.put("account", account); map.put("vcode", vcode); map.put("email", email); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); map.put("date", format.format(new Date())); // 验证信息 CompanyValidate validate = new CompanyValidate(); validate.setTargetName(email); validate.setVcode(vcode); validate.setTargetType(TYPE_EMAIL);// 邮箱验证 // 保存验证信息 companyValidateDao.insertValidate(validate); String key = ""; try { key = MD5.encode(account + email + vcode); map.put("key", key); } catch (Exception e) { return; } // 发送邮件 String sms_flag = (String) MemcachedUtils.getInstance().getClient() .get("baseConfig.sms.flag"); if ("true".equals(sms_flag)) { if (code.equals("0")) { map.put("address", AddressTool.getAddress("www") + "/doValidEmail.htm?key=" + key + "&account" + account + "&vcode=" + vcode); MailUtil.getInstance().sendMail("邮件密码找回", email, "feiliao91-pwd-mail", map, 0); System.out.println(map); } else if (code.equals("1")) { map.put("address", AddressTool.getAddress("trade") + "/security/unValidEmail.htm?key=" + key + "&account=" + account + "&vcode=" + vcode + "&email=" + email); MailUtil.getInstance().sendMail("邮件解绑", email, "feiliao91-email-mailUnbind", map, 0); } else if (code.equals("2")) { map.put("address", AddressTool.getAddress("trade") + "/security/doValidEmail.htm?key=" + key + "&account=" + account + "&vcode=" + vcode + "&email=" + email); MailUtil.getInstance().sendMail("邮件绑定", email, "feiliao91-email-mailBind", map, 0); } } else { // 本地打印信息 System.out.println(map); } }

thymeleaf的取值问题,求大神

![图片说明](https://img-ask.csdn.net/upload/201811/22/1542864610_672089.png) 问题 1、用redpack.variety.description_map.get(‘high_quality_provider_only’)能取到值,不报错 但是用redpack.variety.description_map.high_quality_provider_only为什么报错? 2、上面的数据 redpack.variety.description_map.eticket能去到值,不报错 但是redpack.variety.description_map.phone 为什么报错?

如何在Service层获取用户session中保存的用户信息的方法

这是我在网上找到的一段保存UserSession的java代码。 [code="java"] /** * * Description: 用ThreadLocal提供一个存储线程内变量的地方. <p/> * 客户端代码可以用静态方法存储和获取线程内变量,不需要依赖于HttpSession. * web层的Controller可通过此处向business层传入user_id之类的变量 * */ @SuppressWarnings("unchecked") public class UserSession { /** * 保存变量的ThreadLocal,保持在同一线程中同步数据. */ private static final ThreadLocal SESSION_MAP = new ThreadLocal(); /** * 工具类的protected构造方法. */ protected UserSession() { } /** * 获得线程中保存的属性. * * @param attribute * 属性名称 * @return 属性值 */ public static Object get(String attribute) { Map map = (Map) SESSION_MAP.get(); System.out.println(map.toString()); System.out.println(map.containsKey("usersession")); return map.get(attribute); } /** * 获得线程中保存的属性,使用指定类型进行转型. * * @param attribute * 属性名称 * @param clazz * 类型 * @param <T> * 自动转型 * @return 属性值 */ public static <T> T get(String attribute, Class<T> clazz) { return (T) get(attribute); } /** * 设置制定属性名的值. * * @param attribute * 属性名称 * @param value * 属性值 */ public static void set(String attribute, Object value) { Map map = (Map) SESSION_MAP.get(); if (map == null) { map = new HashMap(); SESSION_MAP.set(map); } map.put(attribute, value); } } [/code] 我在用户登录的时候 执行: [code="java"] UserSession.set("User",User); [/code] 然后在我需要的service层中执行 [code="java"] UserSession.get("User"); //UserSession.get("User",User.class); [/code] 这样第一次一般都取不到session中的User对象。 第二次就可以。请问这个是什么原因呢?

fastjson解析http的get 参数,转换成java对象

我的http请求头如下 ```http http://localhost:8080/trace/Weather?temperatureMax=22&temperatureMin=1&humedityMax=52&humedityMin=2 ``` 当我请求后,json会得到一个这个 ```java weather = {"temperatureMax":["11"],"temperatureMin":["2"],"humidityMax":["55"],"humidityMin":["2"]} ``` 如果我使用parstObject()转换 weather java对象会报出一个异常"["无法转换 大概的意思是我想把 最大温度11 转到weather 对象中但是[11] 他当作一个整体. 如果我一个一个取出来使用Weather构造函数创造一个实例. 那么就成了一个数组 ```java jsonObject.getInteger("temperatureMax");//出现 [ 问题 jsonObject.get("tempertureMax"); //得到的是一个String数组但是只有一个数据. ``` 我最后处理办法 ```java protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { @SuppressWarnings("unchecked") JSONObject jsonWeather = new JSONObject(request.getParameterMap()); // GardenWeather weather = new GardenWeather(jsonWeather.getInteger("temperatureMax"), jsonWeather.getInteger("temperatureMin") // , jsonWeather.getInteger("humidityMax"), jsonWeather.getInteger("humidityMin")); // System.out.println(weather.toString()); log.info("weather = " + jsonWeather.toJSONString()); response.getWriter().write("temperatureMax = " + jsonWeather.toJSONString() ); response.getWriter().println(); String[] max = (String[]) jsonWeather.get("temperatureMax"); response.getWriter().write(new Integer(max[0]).toString()); weatherService.insertWeather(); } ``` 请问有没有更好的办法可以把http中的get请求转换成jave对象

Java局部变量全局变量递归问题

![图片说明](https://img-ask.csdn.net/upload/201612/03/1480762685_802349.png) 先说明一下 代码求的是一个文件夹的大小 _****写法1:用全局变量 不对 写法2 :用局部变量 对****_ 为什么?最好能解释的详细一点 ``` import java.io.File; import java.util.Scanner; public class Directory{ public static void main(String []args){ System.out.println("Enter a directory of file ") ; Scanner input = new Scanner (System.in); String directory = input.nextLine(); System.out.println(getSize(new File(directory)) + "bytes"); } public static long getSize(File file ){ long size = 0; if (file.isDirectory()){ File[]files = file.listFiles(); for (int i =0;files != null && i<files.length; i++) size+=getSize(files[i]); } else size +=file.length(); return size; } } ```

JSTL标签中使用EL表达式调用变量的get方法报错

The function getName must be used with a prefix when a default namespace is not specified ``` <c:forEach items="${tlist}" var="teacher"> <tr><td><c:out value="${teacher.getName()}"/></td><td><c:out value="${teacher.getBirth()}"/></td><td><c:out value="${teacher.getIdcard()}"/></td></tr> </c:forEach> ```

传递href onclick变量以在PHP中运行

<div class="post-text" itemprop="text"> <p>I am trying to pass variables stored in href links to a function. Im able to define the variables from the query results. My problem is passing it to the function once the hyperlink is clicked. This is my code:</p> <pre><code>&lt;?php foreach($pdo-&gt;query('SELECT * FROM sk_courses ORDER BY courseID') as $row) { echo "&lt;a href='#' onclick='hrefClick(".$row['courseID'].");'/&gt;".$row['courseID']."&lt;/a&gt;&lt;br&gt;"; } ?&gt; </code></pre> <p>This is the function:</p> <pre><code>&lt;script&gt; function hrefClick($course){ $newCourse=$course; } &lt;/script&gt; </code></pre> </div>

js全局变量在回调函数中赋值后,无法正常取得

``` var msg_sb="<%=request.getAttribute("sb")%>"; var msg_sbTime="<%=request.getAttribute("sbTime")%>"; var msg_carNum="<%=request.getAttribute("carNum")%>"; var msg_driver="<%=request.getAttribute("driver")%>"; var map = new BMap.Map("allmap"); var point = new BMap.Point(121.48054,31.236423); //map.centerAndZoom(point, 15); map.enableScrollWheelZoom(); map.addControl(new BMap.ScaleControl()); var pointStr = msg_sb.split(","); var timeStr = msg_sbTime.split("@"); var pointArr = []; var timeArr = []; var locationArr = []; var locationInfo = ""; var start = 0; for (var k = 0; k < pointStr.length-1; k += 2) { pointArr.push({ lng: pointStr[k], lat: pointStr[k + 1] }); } for (var k = 0; k < timeStr.length-1; k += 1) { timeArr.push({ time: timeStr[k] }); } // 生成坐标点 var trackPoint = []; for (var i = 0, j = pointArr.length; i < j; i++) { trackPoint.push(new BMap.Point(pointArr[i].lng, pointArr[i].lat)); } getlocal (start) function getlocal (i){ if(i == pointStr.length-1){ alert(i) setInfo(); return } var locatedPoint = new BMap.Point(pointStr[i],pointStr[i + 1]); var gc = new BMap.Geocoder(); gc.getLocation(locatedPoint, function(rs){ var addComp = rs.addressComponents; if(addComp.province !=""){ locationInfo = addComp.province; } if(addComp.city !=""){ locationInfo += "," + addComp.city; } if(addComp.district !=""){ locationInfo += "," + addComp.district; } if(addComp.street !=""){ locationInfo += "," + addComp.street; } if(addComp.streetNumber !=""){ locationInfo += "," + addComp.streetNumber; } addLocation(locationInfo); locationInfo = ""; }); i+=2; getlocal(i) } function addLocation(content){ locationArr.push(content); } function load() {} //配置图片 map.addEventListener("click",function(e){ var clickPoint = new BMap.Point(e.point.lng,e.point.lat); //var clickPoint = new BMap.Point(e.target.getPosition().lng,e.target.getPosition().lat); var gc = new BMap.Geocoder(); gc.getLocation(clickPoint, function(rs){ var addComp = rs.addressComponents; var clickedInfo = ""; if(addComp.province !=""){ clickedInfo = addComp.province; } if(addComp.city !=""){ clickedInfo += "," + addComp.city; } if(addComp.district !=""){ clickedInfo += "," + addComp.district; } if(addComp.street !=""){ clickedInfo += "," + addComp.street; } if(addComp.streetNumber !=""){ clickedInfo += "," + addComp.streetNumber; } var clickInfoWindow = new BMap.InfoWindow(clickedInfo,opts); // 创建信息窗口对象 map.openInfoWindow(clickInfoWindow,clickPoint); //开启信息窗口 }); }); var icon; var opts; // 画图标 //window.onload = setTimeout(function(){ function setInfo(){ icon = new BMap.Icon("./image/DAF_Tipper_48px_.png", new BMap.Size(72,72), {imageOffset: new BMap.Size(0,0)}); opts = { width : 200, height : 0, title : "</br>" , enableMessage:true,//设置允许信息窗发送短息 message:"" } for (var i = 0, j = trackPoint.length; i < j; i++) { if(i == 0){ var marker = new BMap.Marker(trackPoint[i],{icon : icon}); var content = "车牌:" + msg_carNum + "<br/>" + "司机:" + msg_driver + "<br/>" + "地址:"+ locationArr[i]; var label = new BMap.Label(content,{offset:new BMap.Size(50,-30)}); marker.setTop(true); map.addOverlay(marker); marker.setLabel(label); }else if(i == j - 1){ var marker = new BMap.Marker(trackPoint[i],{icon : icon}); var content = "车牌:" + msg_carNum + "<br/>" + "司机:"+ msg_driver + "<br/>" + "地址:"+ locationArr[i]; var label = new BMap.Label(content,{offset:new BMap.Size(50,-30)}); marker.setTop(true); map.addOverlay(marker); marker.setLabel(label); }else{ var marker = new BMap.Marker(trackPoint[i]); var content = "时间:" + timeArr[i].time + "<br/>" + "地址:"+ locationArr[i]; map.addOverlay(marker); addClickHandler(content,marker); } } setZoom(pointArr) } //,3000); //map.centerAndZoom(trackPoint[0], 15); var polyline = new BMap.Polyline(trackPoint, { strokeColor: "#1869AD",//#1869AD strokeWeight: 6, strokeOpacity: 1 }); map.addOverlay(polyline); function addClickHandler(content,marker){ marker.addEventListener("mouseover",function(e){ openInfo(content,e); } ); /* marker.addEventListener("mouseout",function(e){ setTimeout(map.closeInfoWindow(),5000); } ); */ } function openInfo(content,e){ var p = e.target; var point = new BMap.Point(p.getPosition().lng, p.getPosition().lat); var infoWindow = new BMap.InfoWindow(content,opts); map.openInfoWindow(infoWindow,point); } function openInfo1(content,e){ var p = e.target; var point = new BMap.Point(p.getPosition().lng, p.getPosition().lat); var infoWindow = new BMap.InfoWindow(content,opts); map.openInfoWindow(infoWindow,point); } //根据经纬极值计算绽放级别。 function getZoom(maxLng, minLng, maxLat, minLat) { var zoom = ["50", "100", "200", "500", "1000", "2000", "5000", "10000", "20000", "25000", "50000", "100000", "200000", "500000"]; // 级别18到3。 var pointA = new BMap.Point(maxLng, maxLat); // 创建点坐标A var pointB = new BMap.Point(minLng, minLat); // 创建点坐标B var distance = map.getDistance(pointA, pointB).toFixed(1); //获取两点距离,保留小数点后两位 for (var i = 0, zoomLen = zoom.length; i < zoomLen; i++) { if (zoom[i] - distance > 0) { return 18 - i + 5; } } } function setZoom(points) { if (points.length > 0) { var maxLng = points[0].lng; var minLng = points[0].lng; var maxLat = points[0].lat; var minLat = points[0].lat; var res; for (var i = points.length - 1; i >= 0; i--) { res = points[i]; if (res.lng > maxLng) maxLng = res.lng; if (res.lng < minLng) minLng = res.lng; if (res.lat > maxLat) maxLat = res.lat; if (res.lat < minLat) minLat = res.lat; } var cenLng = (parseFloat(maxLng) + parseFloat(minLng)) / 2; var cenLat = (parseFloat(maxLat) + parseFloat(minLat)) / 2; var zoom = getZoom(maxLng, minLng, maxLat, minLat); map.centerAndZoom(new BMap.Point(cenLng, cenLat), zoom); } else { map.centerAndZoom(new BMap.Point(103.388611, 35.563611), 5); } } ``` 请各位帮我看一下,代码里的全局变量locationArr,我在回调函数中赋值,然后在window.onload中取值,在chrome上是可以正常显示locationArr的值得,但是在ie上就不行,自己试了一些网上说的方法,document , ready,但是都不行,是在没办法了,大家能帮我找找原因吗?

Laravel map():如何改变对象和数组?

<div class="post-text" itemprop="text"> <p>I have a multidimensional collection. I want to iterate it and alter some of its child objects and arrays using the map() function: <a href="https://laravel.com/docs/5.1/collections#method-map" rel="noreferrer">https://laravel.com/docs/5.1/collections#method-map</a></p> <p>Sample content:</p> <pre><code>[ { 'address': 'Somestreet 99' 'orders': [ {'id': 11}, {'id': 67} ] } ] </code></pre> <p>Example</p> <pre><code> $deliveries = $delivery_addresses-&gt;map(function($delivery_address){ $orders = $delivery_address-&gt;orders-&gt;filter(function($order){ return $order-&gt;id == 67; }); $delivery_address['address'] = 'A different street 44' $delivery_address['orders'] = $orders; $delivery_address['a_new_attribute'] = 'Some data...'; return $delivery_address; }); </code></pre> <p>Expected result:</p> <pre><code>[ { 'address': 'A different street 44' 'orders': [ {'id': 67} ], 'a_new_attribute': 'Some data...; } ] </code></pre> <p>The result is that only string type variables will be changed. Any arrays or objects will stay the same. Why is this and how to get around it? Thanks! =)</p> </div>

java如何实现在把方法赋值给一个变量,通过变量来调用方法

``` 比如Map<String,Object> a <字符串,方法引用> ``` 然后通过a.get()去调用方法。

JAVA中问一个 不知道算不算是BigDecimal的问题

![图片说明](https://img-ask.csdn.net/upload/201702/14/1487056473_293876.png) 我在这个函数里传了一个List<map> 和一个bigDecimal 过来 然后建了2个栈 bigdecimal引用变量 xxglfSum和 xyglfSum 。然后取出这个List里的MAP ,然后再用xxglfSum这个引用变量指向这个map里的x.get("XXGLF")。 然后关键就是我用这个引用变量去multiply也就是乘我传过来的形参 。按道理来说这个引用变量是指向原来map里get到的堆地址,我做乘法的时候 为什之后来这个堆地址的值没有改变。难道multiply这个方法会生产新的堆变量? 还是说我的理解有错误,求高手解答下。

struts2标签

比如说我已经在后台设了request.setAttribute("map", map); <% Map map = request.getAttribute("map"); for(Iterator iter = map.entrySet().iterator();iter.hasNext();){ Map.Entry entry = (Map.Entry)iter.next(); List list2 = (List)entry.getValue(); user = (User)list2.get(0); ...... ...... ...... } %> 这个在jsp页面 如果用struts2 的标签来转换,该怎么转换,, 要是我想定义变量,用struts2的标签怎么写 例如: int i = 0; String s = "abc"; 请赐教,,先谢过!!

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

程序员请照顾好自己,周末病魔差点一套带走我。

程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

点沙成金:英特尔芯片制造全过程揭密

“亚马逊丛林里的蝴蝶扇动几下翅膀就可能引起两周后美国德州的一次飓风……” 这句人人皆知的话最初用来描述非线性系统中微小参数的变化所引起的系统极大变化。 而在更长的时间尺度内,我们所生活的这个世界就是这样一个异常复杂的非线性系统…… 水泥、穹顶、透视——关于时间与技艺的蝴蝶效应 公元前3000年,古埃及人将尼罗河中挖出的泥浆与纳特龙盐湖中的矿物盐混合,再掺入煅烧石灰石制成的石灰,由此得来了人...

上班一个月,后悔当初着急入职的选择了

最近有个老铁,告诉我说,上班一个月,后悔当初着急入职现在公司了。他之前在美图做手机研发,今年美图那边今年也有一波组织优化调整,他是其中一个,在协商离职后,当时捉急找工作上班,因为有房贷供着,不能没有收入来源。所以匆忙选了一家公司,实际上是一个大型外包公司,主要派遣给其他手机厂商做外包项目。**当时承诺待遇还不错,所以就立马入职去上班了。但是后面入职后,发现薪酬待遇这块并不是HR所说那样,那个HR自...

女程序员,为什么比男程序员少???

昨天看到一档综艺节目,讨论了两个话题:(1)中国学生的数学成绩,平均下来看,会比国外好?为什么?(2)男生的数学成绩,平均下来看,会比女生好?为什么?同时,我又联想到了一个技术圈经常讨...

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

外包程序员的幸福生活

今天给你们讲述一个外包程序员的幸福生活。男主是Z哥,不是在外包公司上班的那种,是一名自由职业者,接外包项目自己干。接下来讲的都是真人真事。 先给大家介绍一下男主,Z哥,老程序员,是我十多年前的老同事,技术大牛,当过CTO,也创过业。因为我俩都爱好喝酒、踢球,再加上住的距离不算远,所以一直也断断续续的联系着,我对Z哥的状况也有大概了解。 Z哥几年前创业失败,后来他开始干起了外包,利用自己的技术能...

C++11:一些微小的变化(新的数据类型、template表达式内的空格、nullptr、std::nullptr_t)

本文介绍一些C++的两个新特性,它们虽然微小,但对你的编程十分重要 一、Template表达式内的空格 C++11标准之前建议在“在两个template表达式的闭符之间放一个空格”的要求已经过时了 例如: vector&lt;list&lt;int&gt; &gt;; //C++11之前 vector&lt;list&lt;int&gt;&gt;; //C++11 二、nullptr ...

优雅的替换if-else语句

场景 日常开发,if-else语句写的不少吧??当逻辑分支非常多的时候,if-else套了一层又一层,虽然业务功能倒是实现了,但是看起来是真的很不优雅,尤其是对于我这种有强迫症的程序"猿",看到这么多if-else,脑袋瓜子就嗡嗡的,总想着解锁新姿势:干掉过多的if-else!!!本文将介绍三板斧手段: 优先判断条件,条件不满足的,逻辑及时中断返回; 采用策略模式+工厂模式; 结合注解,锦...

深入剖析Springboot启动原理的底层源码,再也不怕面试官问了!

大家现在应该都对Springboot很熟悉,但是你对他的启动原理了解吗?

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

为什么你不想学习?只想玩?人是如何一步一步废掉的

不知道是不是只有我这样子,还是你们也有过类似的经历。 上学的时候总有很多光辉历史,学年名列前茅,或者单科目大佬,但是虽然慢慢地长大了,你开始懈怠了,开始废掉了。。。 什么?你说不知道具体的情况是怎么样的? 我来告诉你: 你常常潜意识里或者心理觉得,自己真正的生活或者奋斗还没有开始。总是幻想着自己还拥有大把时间,还有无限的可能,自己还能逆风翻盘,只不是自己还没开始罢了,自己以后肯定会变得特别厉害...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试:第十六章:Java中级开发(16k)

HashMap底层实现原理,红黑树,B+树,B树的结构原理 Spring的AOP和IOC是什么?它们常见的使用场景有哪些?Spring事务,事务的属性,传播行为,数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些?SpringMVC的工作原理,SpringBoot框架的优点,MyBatis框架的优点 SpringCould组件有哪些,他们...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

【阿里P6面经】二本,curd两年,疯狂复习,拿下阿里offer

二本的读者,在老东家不断学习,最后逆袭

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

《经典算法案例》01-08:如何使用质数设计扫雷(Minesweeper)游戏

我们都玩过Windows操作系统中的经典游戏扫雷(Minesweeper),如果把质数当作一颗雷,那么,表格中红色的数字哪些是雷(质数)?您能找出多少个呢?文中用列表的方式罗列了10000以内的自然数、质数(素数),6的倍数等,方便大家观察质数的分布规律及特性,以便对算法求解有指导意义。另外,判断质数是初学算法,理解算法重要性的一个非常好的案例。

《Oracle Java SE编程自学与面试指南》最佳学习路线图(2020最新版)

正确选择比瞎努力更重要!

面试官:你连SSO都不懂,就别来面试了

大厂竟然要考我SSO,卧槽。

微软为一人收购一公司?破解索尼程序、写黑客小说,看他彪悍的程序人生!...

作者 | 伍杏玲出品 | CSDN(ID:CSDNnews)格子衬衫、常掉发、双肩包、修电脑、加班多……这些似乎成了大众给程序员的固定标签。近几年流行的“跨界风”开始刷新人们对程序员的...

终于,月薪过5万了!

来看几个问题想不想月薪超过5万?想不想进入公司架构组?想不想成为项目组的负责人?想不想成为spring的高手,超越99%的对手?那么本文内容是你必须要掌握的。本文主要详解bean的生命...

我说我懂多线程,面试官立马给我发了offer

不小心拿了几个offer,有点烦

自从喜欢上了B站这12个UP主,我越来越觉得自己是个废柴了!

不怕告诉你,我自从喜欢上了这12个UP主,哔哩哔哩成为了我手机上最耗电的软件,几乎每天都会看,可是吧,看的越多,我就越觉得自己是个废柴,唉,老天不公啊,不信你看看…… 间接性踌躇满志,持续性混吃等死,都是因为你们……但是,自己的学习力在慢慢变强,这是不容忽视的,推荐给你们! 都说B站是个宝,可是有人不会挖啊,没事,今天咱挖好的送你一箩筐,首先啊,我在B站上最喜欢看这个家伙的视频了,为啥 ,咱撇...

立即提问
相关内容推荐