Stack Overflow 是一个大型的编程知识库。在 Stack Overflow 中已经有数以百万计的问题,并且很多答案有着很高的质量。这就是为什么 Stack Overflow 的答案经常位于 Google 搜索结果的顶部。

尽管 Stack Overflow 上很多问题已经有了答案,每天还是会有很多问题被提出,很多问题仍然没有被回答或者没有获得满意的答案。那么当 Stack Overflow 不能解决问题时如何去寻找答案。

随着成千上万的程序员使用 Java APIs 并在 Github 上分享他们的项目,这些项目能够给我们提供很好的例子来展示如何使用 Java APIs。Java API Example 是一个搜索门户,它提供了一些非常受欢迎的 Java APIs 的示例代码。

在这篇文章中,将探讨使用开源代码(jExample)是否能够回答排序前列的 API 相关问题。API 相关问题指的是如何使用 APIs 解决任务的问题。我们对 Stack Overflow 排在前面的问题进行了分析。

对于每一个问题,最佳答案显示在最前面,然后是从 Java API examples (jExample) 中给出的解决方法。

1. 遍历 HashMap

采纳的答案给出了这样的解决方法:

Map<String, Object> map = ...;

for (String key : map.keySet()) {

// ...

}

如果我们在 jExample 上搜索 “HashMap” 并跳转到 java.util.HashMap 的示例页面。然后点击最常见的一种方法 – entry(),我们可以快速得到如下的一个例子:

这个例子向我们展示了如何使用HashMap HashMap.entrySet()、Entry.getKey() 和 Entry.getValue() 来遍历HashMap。

链接:HashMap.entrySet()

http://www.programcreek.com/java-api-examples/index.php?class=java.util.HashMap&method=entrySet

2. 由数组创建 ArrayList

这个问题,答案中提供了多种方法。这里是排名前三的方法:

// Method 1

new ArrayList(Arrays.asList(array))

// Method 2

ImmutableList.of("string", "elements");

// Method 3

List l1 = Lists.newArrayList(anotherListOrCollection);

上面的三个方法能够在 jExample 中找到:

方法 1:

方法 2:

方法 3:

如果我们不知道 ImmutableList 类就很难发现第二种方法。然而,如果我们去查看 ImmutableList 的示例页面,我们会学到这个类很多其它的用法。

链接: Arrays.asList(), ImmutableList.of(), Lists.newArrayList()

http://www.programcreek.com/java-api-examples/index.php?class=java.util.Arrays&method=asList

http://www.programcreek.com/java-api-examples/index.php?%20api=com.google.common.collect.ImmutableList

http://www.programcreek.com/java-api-examples/index.php?api=com.google.common.collect.Lists

3. 怎样在一个范围内产生一个随机整数?

采纳的答案给出的解决方法是:

int randomNum = rand.nextInt((max - min) + 1) + min;

如果我们查看 java.util,Random 类的页面,我们也能够找到一种类似的方法:

链接: Random.nextInt()

http://www.programcreek.com/java-api-examples/index.php?class=java.util.Random&method=nextInt

4. 怎样将 String 转换为 int 类型?

最优的答案:

int foo = Integer.parseInt("1234");

链接: Integer.parseInt()

http://www.programcreek.com/java-api-examples/index.php?class=java.lang.Integer&method=parseInt

5. 怎样将 InputStream 转换为 byte array?

采纳的答案:

InputStream is;

byte[] bytes = IOUtils.toByteArray(is);

链接: ByteArrayOutputStream, IOUtils.toByteArray()

http://www.programcreek.com/java-api-examples/index.php?api=java.io.ByteArrayOutputStream

http://www.programcreek.com/java-api-examples/index.php?class=org.apache.commons.io.IOUtils&method=toByteArray

6. 怎样产生一个 MD5 哈希?

答案提到了 MessageDigest。

链接: MessageDigest

http://www.programcreek.com/java-api-examples/index.php?api=java.security.MessageDigest

7. Java 如何创建一个文件和写入一个文件?

创建一个文本文件-方法 1

PrintWriter writer = new PrintWriter("the-file-name.txt", "UTF-8"); writer.println("The first line");

writer.println("The second line");

writer.close();

创建一个文本文件-方法 2

List lines = Arrays.asList("The first line", "The second line");

Path file = Paths.get("the-file-name.txt");

Files.write(file, lines, Charset.forName("UTF-8"));

jExample 中找到的例子:

方法 1.

方法 2.

方法 3.

链接: FileWriter, FileOutputStream, Files.write()

http://www.programcreek.com/java-api-examples/index.php?api=java.io.FileWriter

http://www.programcreek.com/java-api-examples/index.php?api=java.io.FileOutputStream

http://www.programcreek.com/java-api-examples/index.php?class=java.nio.file.Files&method=write

8. Java 读取一个文本文件的最好方式?

BufferedReader br = new BufferedReader(new FileReader("file.txt"));

try {

StringBuilder sb = new StringBuilder();

String line = br.readLine();

while (line != null) {

sb.append(line);

sb.append(System.lineSeparator());

line = br.readLine();

}

String everything = sb.toString();

} finally {

br.close();

}

jExample 中的例子:

链接: FileInputStream, FileReader, Files

http://www.programcreek.com/java-api-examples/index.php?api=java.io.FileInputStream

http://www.programcreek.com/java-api-examples/index.php?api=java.io.FileReader

http://www.programcreek.com/java-api-examples/index.php?api=java.nio.file.Files

9. 怎样从 java.util.Date转换为XMLGregorianCalendar?

采纳的答案:

GregorianCalendar c = new GregorianCalendar();

c.setTime(yourDate); XMLGregorianCalendar date2 = DatatypeFactory.newInstance().newXMLGregorianCalendar(c);

链接: DatatypeFactory.newXMLGregorianCalendar()

http://www.programcreek.com/java-api-examples/index.php?class=javax.xml.datatype.DatatypeFactory&method=newXMLGregorianCalendar

10. 如何检查一个字符串是否为数字?

采纳的答案建议使用 Apache Commons Lang 中的 StringUtils.isNumeric。

这个答案的示例代码可能没必要给出,因为这段代码只有一行。而且,如果查看 StringUtils 的页面,可以看到 StringUtils 最常用的方法列表。这个列表按照流行的程度排序。下面是这份列表的一个快照:

链接: StringUtils

http://www.programcreek.com/java-api-examples/index.php?class=org.apache.commons.lang.StringUtils&method=isNumeric

总结

我找到了 Stack Overflow 上最热门 10 个问题的全部示例代码。然而,jExample 要求用户拥有一定的知识水平并且能够想到大概是什么 API 类。有些答案可能并不明显,不过 jExample 为使用目标 API 类提供了补充信息。侧边栏的相关类和常用方法对于查看相关 API 类和目标 API 类的重要方法是很有用处的。


Stackoverflow 最受关注的 10 个 Java 问题的更多相关文章

  1. Top 10 Mistakes Java Developers Make(转)

    文章列出了Java开发者最常犯的是个错误. 1.将数组转换为ArrayList 为了将数组转换为ArrayList,开发者经常会这样做: ? 1 List<String> list = A ...

  2. 偏执却管用的10条Java编程技巧

    本文由 ImportNew - LynnShaw 翻译自 javacodegeeks.欢迎加入翻译小组.转载请见文末要求. 经过一段时间的编码(咦,我已经经历了将近20年的编程生涯,快乐的日子总是过得 ...

  3. Java基础学习总结(44)——10个Java 8 Lambda表达式经典示例

    Java 8 刚于几周前发布,日期是2014年3月18日,这次开创性的发布在Java社区引发了不少讨论,并让大家感到激动.特性之一便是随同发布的lambda表达式,它将允许我们将行为传到函数里.在Ja ...

  4. 第10讲-Java集合框架

    第10讲 Java集合框架 1.知识点 1.1.课程回顾 1.2.本章重点 1.2.1 List 1.2.2 Set 1.2.3 Map 2.具体内容 2.1.Java集合框架 2.1.1 为什么需要 ...

  5. StackOverflow上面 7个最好的Java答案

    StackOverflow发展到目前,已经成为了全球开发者的金矿.它能够帮助我们找到在各个领域遇到的问题的最有用的解决方案,同时我们也会从中学习到很多新的东西.这篇文章是在我们审阅了StackOver ...

  6. Stackoverflow上人气最旺的10个Java问题(转ImportNew)

    本文转自:http://www.importnew.com/16841.html 写的确实太好了 1.为什么两个(1927年)时间相减得到一个奇怪的结果? 如果执行下面的程序,程序解析两个间隔1秒的日 ...

  7. Stackoverflow上人气最旺的10个Java问题

    1. 为什么两个(1927年)时间相减得到一个奇怪的结果? (3623个赞) 如果执行下面的程序,程序解析两个间隔1秒的日期字符串并比较: 01 public static void main(Str ...

  8. 10本Java经典书目推荐

    本文列出的10本书是我个人非常喜欢的Java书籍,当我有时间的时候,我就会将它们捧在手里阅读.甚至有些书我反复读过很多遍,每次重新读的时候总会有新的收获.因此这些书也是大部分Java程序员喜欢的书籍. ...

  9. Stack Overflow 上人气最旺的 10 个 Java 问题

    1. 为什么两个(1927年)时间相减得到一个奇怪的结果? (3623个赞) 如果执行下面的程序,程序解析两个间隔1秒的日期字符串并比较: public static void main(String ...

随机推荐

  1. OVS+DPDK Datapath 包分类技术

    本文主体内容译于[DPDK社区文档],但并没有逐字翻译,在原文的基础上进行了一些调整,增加了对TSS分类器的详细阐述. 1. 概览 本文描述了OVS+DPDK中的包分类器(datapath class ...

  2. SAP BADI的“多次使用”(multiple use)

    SAP中的某些BADI是不允许多用(multiple use)的,即不能同时存在多个活动的增强实施类.如下图中的这种,无论为其创建多少个实施类,都只有活动的那一个会被触发: tips : 业务加载项定 ...

  3. jquery左右折叠框

    网站左右折叠框: <!DOCTYPE html> <html> <style> #Kefclose,#Kefopen{position:absolute;left: ...

  4. LindDotNetCore~框架介绍及特色功能(有点springboot的意思)

    LindDotNetCore模块介绍 大叔博客 LindDotNetCore相关模块介绍 [x] 全局都是依赖DI [x] 消息队列 [x] NoSql [x] Caching [x] 仓储 [x] ...

  5. 【转载】tomcat+nginx+redis实现均衡负载、session共享(一)

    http://www.cnblogs.com/zhrxidian/p/5432886.html 在项目运营时,我们都会遇到一个问题,项目需要更新时,我们可能需先暂时关闭下服务器来更新.但这可能会出现一 ...

  6. nginx防盗链

    盗链是指一个网站的资源(图片或附件)未经允许在其它网站提供浏览和下载.尤其热门资源的盗链,对网站带宽的消耗非常大,本文通过nginx的配置指令location来实现简单的图片和其它类型文件的防盗链. ...

  7. HTML Meta信息的优先级

    一般来讲meta的信息都是不同维度的不会有冲突,不过下面两个有一定冲突: <meta name="renderer" content="webkit"&g ...

  8. KNN算法思想与实现

    第二章 k近邻 2.1 算法描述 (1)采用测量不同特征值之间的距离进行分类 优点:对异常点不敏感,精度高,无数据输入设定 缺点:空间,计算复杂度高 适合数据:标称与数值 (2)算法的工作原理: 基于 ...

  9. display的属性值测试

    由于在学习CSS的display的属性值只针对block.inline.inline-block和flex进行过了解,并且自己观察得知列表中li的display属性是list-item,而想要触发BF ...

  10. es6属性基础教学,30分钟包会

    ES6基础智商划重点在实际开发中,ES6已经非常普及了.掌握ES6的知识变成了一种必须.尽管我们在使用时仍然需要经过babel编译.ES6彻底改变了前端的编码风格,可以说对于前端的影响非常巨大.值得高 ...