1. java判断两个字符串是否相等用equals

2. java只传递指针遇到的坑:

 1 import java.util.*;
2
3 public class mapTest {
4 public static class EntryWeight{
5 public int entryid;
6 public float wordweight;
7 public int getentryid(){return entryid;}
8 public float getwordweigth(){return wordweight;}
9 public String toString() {
10 return "id=" + entryid + ", weight=" + wordweight;
11 }
12 }
13 public static void main(String[] args) {
14 ArrayList<EntryWeight> entryPairs = new ArrayList<EntryWeight>(5);
15 for(int i=0;i<5;i++){
16 EntryWeight entryPair = new EntryWeight();
17 entryPair.entryid = i;
18 entryPair.wordweight = (float)0.5+i;
19 entryPairs.add(entryPair);
20 System.out.println("entry pair: " + entryPair.getentryid() );
21
22 }
23 for(int i=0;i<entryPairs.size();i++){
24 System.out.println("entrys "+i+" : " + entryPairs.get(i).entryid );
25 }
26 for(int i=0;i<entryPairs.size();i++){
27 System.out.println("entrys "+i+" : " + entryPairs.get(i).wordweight );
28 }
29 for (Iterator<EntryWeight> iterator = entryPairs.iterator(); iterator.hasNext(); ) {
30 System.out.println(iterator.next());
31 }
32 }
33 }

这样写是正确的,输出:

entry pair: 0
entry pair: 1
entry pair: 2
entry pair: 3
entry pair: 4
entrys 0 : 0
entrys 1 : 1
entrys 2 : 2
entrys 3 : 3
entrys 4 : 4
entrys 0 : 0.5
entrys 1 : 1.5
entrys 2 : 2.5
entrys 3 : 3.5
entrys 4 : 4.5
id=0, weight=0.5
id=1, weight=1.5
id=2, weight=2.5
id=3, weight=3.5
id=4, weight=4.5

把EntryWeight entryPair = new EntryWeight()放在for循环外边,其他都不改,

public static void main(String[] args) {
ArrayList<EntryWeight> entryPairs = new ArrayList<EntryWeight>(5);
EntryWeight entryPair = new EntryWeight();
for(int i=0;i<5;i++){
entryPair.entryid = i;
entryPair.wordweight = (float)0.5+i;
entryPairs.add(entryPair);
System.out.println("entry pair: " + entryPair.getentryid() );
}

输出变成了这样:

entry pair: 0
entry pair: 1
entry pair: 2
entry pair: 3
entry pair: 4
entrys 0 : 4
entrys 1 : 4
entrys 2 : 4
entrys 3 : 4
entrys 4 : 4
entrys 0 : 4.5
entrys 1 : 4.5
entrys 2 : 4.5
entrys 3 : 4.5
entrys 4 : 4.5
id=4, weight=4.5
id=4, weight=4.5
id=4, weight=4.5
id=4, weight=4.5
id=4, weight=4.5

是因为entryPairs.add()只是把地址传过来了,并没有新建一个entryPair,想起早晨师兄还说到这个,这么快就踩到了。

Java中集合提供的拷贝构造函数只支持浅拷贝而不是深拷贝,这意味着存储在原有List和克隆List中的对象会保持一致,并指向Java堆中同一内存地址。

2. map的key如果用数字的话可以定义成:

Map<Integer, EntryWeight> db = new HashMap<Integer, EntryWeight>();
db.put(0, entryList);

java踩坑的更多相关文章

  1. 『OGG 02』Win7 配置 Oracle GoldenGate Adapter Java 踩坑指南

    上一文章 <__Win7 配置OGG(Oracle GoldenGate).docx>定下了 两个目标: 目标1: 给安装的Oracle_11g 创建 两个用户 admin 和 root ...

  2. Java踩坑之路

    陆陆续续学Java也快一年多了,从开始的一窍不通到现在的初窥门径,我努力过,迷茫过,痛过,乐过,反思过,沉淀过.趁着新年,我希望能把这些东西记下来,就当是我一路走来的脚印. 一.初识网站应用 记得第一 ...

  3. JAVA踩坑录

    以前踩了很多坑,大多忘了.现在踩了坑,想起了一定记下来. 1. 字符串分割,这种工具类,首次使用一定要先看一眼,不然跳坑 commons-lang StringUtils.split分割时会去掉空串: ...

  4. java踩坑记

    1.String 相等 稍微有点经验的程序员都会用equals比较而不是用 ==,但用equals就真的安全了吗,看下面的代码 user.getName().equals("xiaoming ...

  5. mongo java 踩坑记

    为什么会有这么多坑 1.  Java会把 id:String = "合法ObjectId"  好心好意的 转为  _id:ObjectId 类型. 2. 为了避免第1点, 我定义了 ...

  6. Java踩坑记系列之Arrays.AsList

    java.util.Arrays的asList方法可以方便的将数组转化为集合,我们平时开发在初始化ArrayList时使用的比较多,可以简化代码,但这个静态方法asList()有几个坑需要注意: 一. ...

  7. Spark SQL 用户自定义函数UDF、用户自定义聚合函数UDAF 教程(Java踩坑教学版)

    在Spark中,也支持Hive中的自定义函数.自定义函数大致可以分为三种: UDF(User-Defined-Function),即最基本的自定义函数,类似to_char,to_date等 UDAF( ...

  8. Java踩坑之List的removeAll方法

    最近在公司写东西,发现List的removeAll方法报错 Demo代码如下: List<Long> ids1 = Arrays.asList(1L, 3L, 2L); List<L ...

  9. Java 开发中如何正确踩坑

    为什么说一个好的员工能顶 100 个普通员工 我们的做法是,要用最好的人.我一直都认为研发本身是很有创造性的,如果人不放松,或不够聪明,都很难做得好.你要找到最好的人,一个好的工程师不是顶10个,是顶 ...

随机推荐

  1. Python pip 如何升级

    场景:部署环境时,在线安装第三方库(pip install flask-bootstrap),提示pip版本过低. 解决方法一:        命令: python -m pip install -- ...

  2. byte数组存储到mysql

    public int AddVeinMessage(byte[] data)//插入数据库 { using (BCSSqlConnection = new MySqlConnection(strCon ...

  3. python QT 编程之路

    pyQT4  的Wheel 下载 https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyqt4 python发送GET 或者 POST请求 https://www ...

  4. UVA11491 奖品的价值

    奖品的价值C804 运行时间限制:1000ms: 运行空间限制:51200KB 试题描述 你是一个电视节目的获奖嘉宾.主持人在黑板上写出一个 n 位非负整数(不以 0 开头),邀请你删除其中的 d 个 ...

  5. JavaScript深度克隆

    深度克隆函数: function deepClone(obj){ var str = ""; var newobj = obj.constructor === Array ? [] ...

  6. finecms如何调用多个栏目的子栏目

    前面我们说到了finecms如何调用多个指定栏目的内容,finecms如何调用多个栏目的子栏目呢?用下面的代码就可以实现了,其中id是具体的栏目id,用“,”逗号隔开 {list action=cat ...

  7. 001-dubbo基础-001-服务化最佳实践、异常处理逻辑

    1.参看地址 http://dubbo.apache.org/zh-cn/ 2.服务化最佳实践 分包 建议将服务接口.服务模型.服务异常等均放在 API 包中,因为服务模型和异常也是 API 的一部分 ...

  8. Windows 7中200M神秘隐藏分区

    裸机全新安装Windows 7的用户,在安装完成后运行diskmgmt.msc打开磁盘管理器,可以看到在系统分区(一般为C分区)之前有一个大小为200MB的隐藏分区.这个特殊的隐藏分区与Windows ...

  9. test TSS Work about

     activity01   activity02   FamilyNew   workTest

  10. HBase 数据迁移方案介绍 (转载)

    原文地址:https://www.cnblogs.com/ballwql/p/hbase_data_transfer.html 一.前言 HBase数据迁移是很常见的操作,目前业界主要的迁移方式主要分 ...