Stack Overflow es un gran repositorio de valiosos conocimientos de programación. Se han respondido millones de preguntas en Stack Overflow y muchas respuestas tienen una calidad muy alta. Esta es la razón por la que las respuestas de Stack Overflow a menudo se encuentran en la parte superior del resultado de búsqueda de Google.
A pesar de que Stack Overflow ha respondido una gran cantidad de preguntas, todavía se publican preguntas todos los días y muchas de ellas permanecen sin respuesta o no obtienen buenas respuestas. Entonces, la pregunta es cómo encontrar respuestas cuando Stack Overflow no es suficiente.
Como miles de programadores usan las API de Java y comparten sus proyectos en Github, esos proyectos deberían poder proporcionar buenos ejemplos para mostrar cómo usar las API de Java. Ejemplo de API de Java (jEjemplo: http://www.programcreek.com/java-api-examples/index.php) es un portal de búsqueda que proporciona ejemplos de código para las API populares de Java.
En esta publicación, exploraré si el uso de código fuente abierto solo (jExample) puede responder o no a la pregunta relacionada con la API más votada. «Preguntas relacionadas con la API» se refiere a las preguntas que tratan sobre cómo utilizar las API para resolver una tarea. Se analizan las preguntas más votadas de Stack Overflow (enlace: http://stackoverflow.com/questions/tagged/java).
Para cada pregunta, primero se muestran las mejores respuestas y luego se ilustra la solución de los ejemplos de la API de Java (jExample).
1. Iterar a través de un HashMap
La respuesta aceptada proporciona esta solución:
Map<String, Object> map = ...; for (String key : map.keySet()) { // ... } |
Si buscamos «HashMap» en jExample y vamos a la página de ejemplo de java.util.HashMap. Y luego haga clic en uno de los métodos más comunes: entrySet (), podemos obtener rápidamente un ejemplo como el siguiente:
Este ejemplo muestra cómo iterar a través de un HashMap usando HashMap.entrySet()
,Entry.getKey()
, y Entry.getValue()
.
Enlaces: HashMap.entrySet ()
2. Cree ArrayList a partir de una matriz
Para esta pregunta, se proporcionan múltiples formas a partir de varias respuestas. Estos son los 3 métodos principales:
// Method 1 new ArrayList<Element>(Arrays.asList(array)) |
// Method 2 ImmutableList.of("string", "elements"); |
// Method 3 List<String> l1 = Lists.newArrayList(anotherListOrCollection); |
Los 3 métodos anteriores se pueden encontrar usando jExample.
Método 1:
Método 2:
Método 3:
Puede que no sea fácil encontrar la segunda solución si no conocemos la clase ImmutableList
. Sin embargo, si vamos a la página de ejemplo de ImmutableList
, aprendemos otros métodos populares de esta clase.
Enlaces: Arrays.asList (), ImmutableList.of (), Lists.newArrayList ()
3. ¿Cómo generar números enteros aleatorios en un rango?
La solución de la respuesta aceptada es:
int randomNum = rand.nextInt((max - min) + 1) + min; |
Si vamos al java.util.Random
página de clase, también podemos obtener una similar:
Enlace: Random.nextInt ()
4. ¿Cómo convertir String a Int?
La mejor respuesta:
int foo = Integer.parseInt("1234"); |
jEjemplo:
Enlace: Integer.parseInt ()
5. ¿Cómo convertir InputStream a una matriz de bytes?
Respuesta aceptada:
InputStream is; byte[] bytes = IOUtils.toByteArray(is); |
jEjemplo de solución:
Enlaces: ByteArrayOutputStream, IOUtils.toByteArray ()
6. ¿Cómo generar un hash MD5?
La respuesta menciona MessageDigest
.
El jExample puede encontrar este ejemplo:
Enlace: MessageDigest
7. ¿Cómo crear un archivo y escribir en un archivo en Java?
Crear un archivo de texto – método 1
PrintWriter writer = new PrintWriter("the-file-name.txt", "UTF-8"); writer.println("The first line"); writer.println("The second line"); writer.close(); |
Crear un archivo de texto – método 2
List<String> 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")); |
Ejemplos encontrados en jExample:
Método 1.
Método 2.
Método 3.
Enlaces: FileWriter, FileOutputStream, Files.write ()
8. ¿La mejor forma de leer un archivo de texto en 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(); } |
Ejemplo de jExample:
Enlaces: FileInputStream, FileReader, Archivos
9. ¿Cómo convertir java.util.Date a XMLGregorianCalendar?
Respuesta aceptada:
GregorianCalendar c = new GregorianCalendar(); c.setTime(yourDate); XMLGregorianCalendar date2 = DatatypeFactory.newInstance().newXMLGregorianCalendar(c); |
De jExample:
DatatypeFactory.newXMLGregorianCalendar ()
10. ¿Cómo comprobar si una cadena es numérica?
La respuesta aceptada sugiere usar StringUtils.isNumeric
de Apache Commons Lang.
Es posible que no sea necesario un ejemplo de código para esta respuesta, ya que el código es solo una línea. Sin embargo, si vamos a la página de StringUtils
, podemos ver la lista de los métodos más comunes de StringUtils
. La lista está ordenada por popularidad. Aquí hay una instantánea del lsit:
StringUtils
Conclusión
Encontré ejemplos de código para las 10 preguntas más votadas de Stack Overflow. Sin embargo, jExample requiere que el usuario tenga cierto nivel de conocimiento y adivine la clase de API. Es posible que algunas respuestas no sean obvias, pero jExample aún proporciona información complementaria para usar una clase de API de destino. Las clases relacionadas y las barras laterales de métodos comunes son muy útiles para ver las clases de API relacionadas y los métodos populares de la clase de API de destino.