问一下空指针判断的问题

cobola 发布于 2013/07/18 22:02
阅读 306
收藏 0

【深度】AI、5G时代下,算力网络与内生安全最全解析!>>>

我的任务是

获取 class=m的第一个节点的值


doc.select("[class=m]").first().text()


这么写的话  会有doc.select("[class=m]")的空指针报错

所以 需要判断一下 doc.select("[class=m]") != null && doc.select("[class=m]").size()>0 然后再first()

这是常规做法么?

现在我打算用

for(Element e:doc.select("[class=m]")){
          System.out.println(e.text());
          break;
  }

这样来做 能避免空指针的问题 

这么做有问题么?

有什么好办法避免空指针问题?


刚才简单写了一个测试

循环50 500 5000 5000 500000 对应的时间

小的时候 差别两倍 大的时候 差别不大 

附代码

       Document doc = Jsoup.connect("http://www.baidu.com/").get();

        int total = 500000;

        long start = System.currentTimeMillis();
        int i = 0;
        while (i < total) {
            for (Element e : doc.select("b[href]")) {
                System.out.print(e.text());
                break;
            }
            i++;
        }
        System.out.println("");
        System.out.println(System.currentTimeMillis() - start);

        start = System.currentTimeMillis(); 
       i=0
       while (i < total) {
            Elements tmp = doc.select("a[href]");

            if (tmp!= null && tmp.size()>0) {
                System.out.print(tmp.first().text());
            }
            i++;
        }

        System.out.println("");
        System.out.println(System.currentTimeMillis() - start);

  
jdk1.7

求科普 空指针怎么处理比较优雅?
加载中
返回顶部
顶部