那不行,因为你放到map里头的就是这个对象,一旦“复用”,那么整个map里边放的“10份入口”都是指向同一个对象。后面对int1和int2字段的修改就会覆盖前面的。

解决方案 »

  1.   

    没明白你的意思?你要这个map来做什么?
      

  2.   

    Map htabel = new HashMap();HashTable 不推荐用了~
      

  3.   

    第一:你的代码是有问题的,通过你的代码可以看出,实例变量可以直接访问成员变量,这是不安全的,myClass.int1 = i;myClass.int2 = i;,也就是没有实现真正意义上的封装。你可以想,任何人只要实例化你的类,都可以修改你的成员变量。
    第二,放到集合中的对象,虽然在你的代码中是同一个句柄,也就是myClass,但实际的对象是不同的,为什么呢,因为每次都是一个新的实例对象,每次对象的成员变量的值是不同的,所以在这部分是不可能再考虑如何优化的问题
      

  4.   

    赫赫   换成set方法ok?楼上的安你的意思是不能优化了?
      

  5.   

    用HashSet
    HashTable 太老了。
      

  6.   

    怎么没必要
    难道你愿意每次循环就创建一个对象?
    sign....没办法啦
      

  7.   

    是否要每次循环都创建一个对象,不应该由你的意愿决定,关键看你要做什么。从你的代码来看,你是要往map里插入9个不同的对象,而不是一个对象的9份引用,那没办法,只能一次循环创建一个。
      

  8.   

    解决之道:
     
       private static boolean  initlezed = flase;
       
       private static yourClass  yourclass= null;  for(xx; xx; xx)
      {
        if( initlezed )
         {
           yourclass = new yourClass();
            }
         do something you like;
         do something you like;   }我写的不细.楼主能看明白吗?