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 类的重要方法是很有用处的。

转载于:https://www.cnblogs.com/zhangboyu/p/7452584.html

Stackoverflow 最受关注的 10 个 Java 问题相关推荐

  1. Top 10 Mistakes Java Developers Make(转)

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

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

    经过一段时间的编码(咦,我已经经历了将近20年的编程生涯,快乐的日子总是过得很快),我们开始感谢那些好习惯.因为,你知道- "任何可能出错的事情,最后都会出错." 这就是人们为什么 ...

  3. 10个Java 8 Lambda表达式经典示例

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

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

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 StackOverflow发展到目前,已经成为了全球开发者的金矿. ...

  5. 这10道Java面试题!95%的人回答不出来!

    作者:Yujiaao https://segmentfault.com/a/1190000019962661 1.为什么等待和通知是在 Object 类而不是 Thread 中声明的? 2.为什么Ja ...

  6. osx java 6_OSX 10.11 java 6不兼容怎么办?OSX 10.11 java 6不兼容解决办法

    OSX 10.11 java 6不兼容怎么办?有很多用户在使用最新的OSX 10.11系统时会发现java SE 6不兼容的问题,其实要解决 这个问题比较简单,用户需要下载安装最新的Java SE 8 ...

  7. java布道师_初探第10代Java帝国:11位Java专家道出了他们最喜欢的功能

    Java 10发布后.我们第一时间与11位Java专家讨论了一波.顺便深入挖掘了他们在Java 10中最喜欢的功能和对未发布的JDK11版本的一些看法. " Java 10对Java 9来说 ...

  8. 10 行 Java 代码实现 LRU 缓存

    10 行 Java 代码实现 LRU 缓存 (整理自网络) 最近最少使用缓存的回收 为了实现缓存回收,我们需要很容易做到: 查询出最近最晚使用的项 给最近最少使用的项做一个标记 链表可以实现这两个操作 ...

  9. 这10道Java面试题!大部分的人回答不出来

    1.为什么等待和通知是在 Object 类而不是 Thread 中声明的? 2.为什么Java中不支持多重继承? 3.为什么Java不支持运算符重载? 4.为什么 String 在 Java 中是不可 ...

最新文章

  1. Python学习笔记六(Python time模块)
  2. 两个list关联合并_算法分享---两个有序链表的合并(C语言)
  3. spring整合struts2时作用域scope解析
  4. WEB消息提醒实现之二 实现方式-Jquery Ajax长轮询
  5. X86汇编语言从实模式到保护模式16:特权级和特权级保护
  6. python基础教程是什么-python基础教程之python是什么?
  7. 笔记3:STM32F103与STM32F030的区别
  8. java url 中文转码_URL请求中文、符号“乱码”(解码、转码)解决方式
  9. 树莓派python通过websockets使用调用Leapmtion
  10. CSS命名规范 BEM 颜色 【全局】
  11. macbook pro m1 在 EXCEL 中安装 Excel2Latex
  12. 集群学习分享2:pcs+postgresql一主两从集群搭建
  13. Scrum板与Kanban如何抉择?敏捷工具:opdea板与按照guarbpgz
  14. 简单的网易云音乐热门评论爬虫
  15. 马士兵java框架_马士兵java架构师
  16. python简笔画大全_只用C++和Python,让你的简笔画实时动起来!
  17. 【AI PC端算法优化】一,一步步优化RGB转灰度图算法
  18. 那些逝去的岁月-多事之秋
  19. 餐厅点餐系统GUI——Java大作业
  20. 利用D415读取 需要标记的人脸face_recognition的距离 Python + wind10

热门文章

  1. Java基础面试题,啾啾啾~~~
  2. WordPress ProfilePress插件多个严重漏洞
  3. linux windows死机,linux死机的处理方式
  4. 充满男性荤段子的开源软件 DICSS 引发争议
  5. 资源管理器停止工作,自动重启
  6. F5解决方案– 教育行业解决方案1(分析篇)
  7. wordpress 密码重置 本地恢复后站点地址修改
  8. java oracle数据库高效分页查询_Oracle学习之分页查询数据
  9. js调用打印机直接打印_标签打印机测评丨用手机控制和键盘直接操作哪种更好用?...
  10. 模型算法_推荐算法之隐语义模型