A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. package com.cg.test;

  2. import java.util.HashMap;
  3. import java.util.Iterator;
  4. import java.util.Map;
  5. import java.util.Set;
  6. /*class Student{
  7.         String name;
  8.         int age;
  9.         Student(String name,int age){
  10.                 this.name=name;
  11.                 this.age=age;
  12.         }
  13. }*/
  14. class Work{
  15.        
  16. }
  17. class Producer{
  18.        
  19. }
  20. class Utils<QQ>{
  21.         QQ qq;
  22.         public void setObject(QQ qq){
  23.                 this.qq=qq;
  24.         }
  25.         public QQ getObject(){
  26.                 return qq;
  27.         }
  28. }
  29. public class MapTestDemo {
  30.         public static void main(String[] args) {
  31.                 showMap();
  32.         }
  33.         public static void showMap(){
  34.                 Map<Student, String> map =new HashMap<Student, String>();
  35.                
  36.                 Utils<Student> utils1=new Utils<Student>();
  37.                 Utils<Student> utils2=new Utils<Student>();
  38.                 Utils<Student> utils3=new Utils<Student>();
  39.                
  40.                 utils1.setObject(new Student("小明", 20));
  41.                 utils2.setObject(new Student("张山", 21));
  42.                 utils3.setObject(new Student("小四", 22));
  43.                
  44.                 Student student1=utils1.getObject();
  45.                 Student student2=utils2.getObject();
  46.                 Student student3=utils3.getObject();
  47.                
  48.                     map.put(student1, "武汉大学");
  49.                     map.put(student2, "清华大学");
  50.                 map.put(student3, "华中师范");
  51.                 Set<Student> s=map.keySet();
  52.                 Iterator<Student> it=s.iterator();
  53.                 while(it.hasNext()){
  54.                         Student s1=it.next();
  55.                         String s2=map.get(s1);
  56.                         System.out.println(s2);
  57.                 }
  58.                 Set<Map.Entry<Student, String>> set=map.entrySet();
  59.                 Iterator<Map.Entry<Student, String>> iterator=set.iterator();
  60.                 while(iterator.hasNext()){
  61.                         Map.Entry<Student, String> mapEntry=iterator.next();
  62.                         Student student=mapEntry.getKey();
  63.                         String string=mapEntry.getValue();
  64.                         System.out.println(student.name+":"+student.age);
  65.                         System.out.println(string);
  66.                 }
  67.        
  68.         }
  69.        
  70. }
复制代码
想问下,如果定义了一个Utils工具泛型类,在每次添加元素的时候,都需要new一个行的Utils对象么,这样做是不是效率很低呢?既然这样很麻烦为什么还要定义这样一个工具类呢?在每次添加一个学生类对象都要通过Utils获取一个学生类对象,感觉好麻烦,求解答!

评分

参与人数 1技术分 +1 收起 理由
SyouRai_Tsk + 1

查看全部评分

4 个回复

倒序浏览
        有个addAll( )方法可以接受一个Collection对象,或者一个数组或者一个用逗号分隔的列表,你可以把要添加的对象存在二维数组中用addAll( )方法。
        或者是用数组Arrays的asList( )方法返回一个受指定数组支持的固定大小的列表。
        目前为止就知道这两种方法,也许接着往后学会有新的方法吧,也希望有高手能提供!

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
问题是这两部怎么优化呀
Utils<Student> utils1=new Utils<Student>();
                Utils<Student> utils2=new Utils<Student>();
                Utils<Student> utils3=new Utils<Student>();
               
                utils1.setObject(new Student("小明", 20));
                utils2.setObject(new Student("张山", 21));
                utils3.setObject(new Student("小四", 22));

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
把工具类Utils中的方法设置为static的,并且把学生对象也作为参数传递,这样就不用每次都new对象了
工具类一般没有特有的属性。才把方法设置成静态的
回复 使用道具 举报 0 1
kevinmesss.tz 发表于 2014-4-21 20:16
把工具类Utils中的方法设置为static的,并且把学生对象也作为参数传递,这样就不用每次都new对象了
工具类 ...

那就失去了工具类的特性了呀,不然还要工具类干嘛!不就是定义一个泛型类就可以了么
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马