ss003620 2012-09-03 15:56
浏览 352
已采纳

ArrayList的相关问题?

  /**
     * 查询用户列表
     * @return userList
     */
    public ArrayList<Object> seleteUserList()
    {
        initDb();
        PreparedStatement pst = null;
        ResultSet rs = null;
        ArrayList<Object> userList = null;
        try {
            String sql = "SELECT user_id,user_name FROM usertable WHERE user_display = 1";
            pst = con.prepareStatement(sql);
            rs = pst.executeQuery();
            userList = new ArrayList<Object>();
            while (rs.next()) {         
                Integer userId = rs.getInt("user_id");
                String userName = rs.getString("user_name");
                UserVo uv = new UserVo();
                uv.setUserId(userId);
                uv.setUserName(userName);
                userList.add(uv);
            }
            
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        finally
        {
            try {
                rs.close();
                pst.close();
                con.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        return userList;        
    }

 还是以代码为例:

1. ArrayList<Object>后面的object什么意思?去掉行不行?

2.根据10行和15行,将10行改为ArrayList<object> userList = new ArrayList<object>();删除15行,行不行?

3.20和21行,改为

uv.setUserId(rs.getInt("user_id"));
    uv.setUserName(rs.getString("user_name"));

行不行?

 

 

  • 写回答

12条回答 默认 最新

  • jinnianshilongnian 2012-09-03 16:27
    关注
    1. ArrayList后面的object什么意思?去掉行不行? 泛型实参,既可以接受任意Object类型的数据,去掉是可以的,默认在编译完成后会进行泛型擦出(既跟不写一样),,泛型的目的是保证写代码时类型安全;

    2.根据10行和15行,将10行改为ArrayList userList = new ArrayList();删除15行,行不行?
    这样不行,必须在try外边声明 因为你要返回;

    3.20和21行,改为
    uv.setUserId(rs.getInt("user_id"));
    uv.setUserName(rs.getString("user_name"));
    行不行?

    行。

    泛型的目的:参数化类型,并且保证编写代码的正确性和安全性;

    1、参数化类型
    如我有一个数据结果List,这是一个有序列表,如果没有泛型,我可能这么来实现:
    IntList、DoubleList --->每个类型都需要一个
    或者
    ObjectList --->Object是所有类型的超类,可能造成数据混乱,引起代码错误;

    我们知道 List的算法骨架都是一样的,只是操作的数据不一样(如Int、Long……),因此呢,我们把这个数据类型参数化:
    List ---->T表示泛型形参,类似于方法的形参

    我们使用时可以通过 List Integer就是实参;

    这样的好处我们只有一个List数据结构,仅仅是数据不同。

    2、编码的安全性和正确性
    没有泛型时
    List 可以存放任意的Object类型,既Integer、Long等都行,我们可能放入不正确的数据,造成程序异常;

    有了泛型之后,我们在写代码时
      List<Integer> 只能放Integer类型
    

    3、你的这个List 和List 其实没什么区别,建议改成 List 这样就只能往里放UserVo 这个类型的数据。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(11条)

报告相同问题?

悬赏问题

  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示