Stackoverflow 最受关注的 10 个 Java 问题

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

时间: 2024-11-04 20:20:22

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

Top 10 Mistakes Java Developers Make(转)

文章列出了Java开发者最常犯的是个错误. 1.将数组转换为ArrayList 为了将数组转换为ArrayList,开发者经常会这样做: ? 1 List<String> list = Arrays.asList(arr); Arrays.asList()会返回一个ArrayList,但这个ArrayList是Arrays的私有静态类,不是java.util.ArrayList.java.util.Arrays.ArrayList有set(), get(), contains()方法,但没有任

Spark3000门徒第10课Java开发Spark实战总结

今晚听了王家林老师的第10课Java开发Spark实战,课后作业是:用Java方式采用Maven开发Spark的WordCount并运行在集群中 先配置pom.xml <groupId>com.dt.spark</groupId> <artifactId>SparkApps</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging

10 Best Java Tools That Every Java Programmers Should Know

http://devzum.com/2015/01/15/10-best-java-tools-that-every-java-programmers-should-know/ 10 Best Java Tools That Every Java Programmers Should Know Jan 15, 2015by vikas in TOOLS Computer development is all based on a resource called Language. The way

Android技术10:Java与C语言之间简单数据的传递

由于C语言和Java语言之间很多类型不一致性,因此使用native时,需要数据类型转换.下面演示分别传递整型,字符串,整型数组,Java静态方法传递数据. 1.创建native方法 我们单独创建一个NativeClass类来存放native方法 1 package com.forsta.ndk; 2 3 public class NativeClass { 4 public native int add(int x,int y); 5 public native String showStrin

Top 10 Mistakes Java Developers Make--reference

This list summarizes the top 10 mistakes that Java developers frequently make. #1. Convert Array to ArrayList To convert an array to an ArrayList, developers often do this: List<String> list = Arrays.asList(arr); Arrays.asList() will return an Array

第10篇-JAVA 集合框架-JAVA 泛型

第10篇-JAVA 集合框架-JAVA 泛型 每篇一句 :所有的不甘,都是因为还心存梦想 初学心得: 不是每件事都注定会成功,但是每件事都值得一试 (笔者:JEEP/711)[JAVA笔记 | 时间:2017-04-15| JAVA 集合框架/JAVA 泛型 ] 1.JAVA 集合框架概念 通俗的说,集合就是一个存放数据的容器,准确的说,就是放数据对象引用的容器 数组和集合都是容器,有何不同? 数组长度固定,集合长度可变 数组只能存放相同类型的数据,集合可以存放不同类型的数据 数组可存放简单数据

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

本文由 ImportNew - LynnShaw 翻译自 javacodegeeks.欢迎加入翻译小组.转载请见文末要求. 经过一段时间的编码(咦,我已经经历了将近20年的编程生涯,快乐的日子总是过得很快),我们开始感谢那些好习惯.因为,你知道… “任何可能出错的事情,最后都会出错.” 这就是人们为什么喜欢进行“防错性程序设计”的原因.偏执的习惯有时很有意义,有时则不够清晰也不够聪明,也许当你想到这样写的人的时候还会觉得有点怪异.下面是我列出的的个人感觉最有用而又偏执的 10 项 Java 编程

10本Java精选书籍助你快速进阶Java顶尖程序员

书是人类进步的阶梯,从某种意义上讲,一个人读书多少,跟这个人将来能有多大成就取得多大成功有着必然的联系,然而读书不仅仅是求量的过程,还需要精读.有选择的读,前面的文章给大家介绍过从零基础学习java编程到精通之路的五本书籍,但是Java学习入门之后,想要往更高层次的Java方向发展,如果能有几本好书的辅助,可以使我们在Java进阶之路上事半功倍,那么下面亦是美网络小编再给大家推荐10本Java精选书籍助你进阶Java顶尖程序员. 1.<深入理解Java虚拟机:JVM高级特性与最佳实践> 本书从

90%的Java程序员不会的10到Java面试题

先来看看这10道Java面试题你会几道?1.为什么等待和通知是在 Object 类而不是 Thread 中声明的?2.为什么Java中不支持多重继承?3.为什么Java不支持运算符重载?4.为什么 String 在 Java 中是不可变的?5.为什么 char 数组比 Java 中的 String 更适合存储密码?6.如何使用双重检查锁定在 Java 中创建线程安全的单例? 编写 Java 程序时, 如何在 Java 中创建死锁并修复它? 如果你的Serializable类包含一个不可序列化的成