java踩坑

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);      

 

转载于:https://www.cnblogs.com/zhengmeisong/p/8568693.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值