Qual é a diferença entre HashMap e Hashtable
Fonte: Medium Hoje você aprenderá a resposta para uma das perguntas mais populares das entrevistas sobre Java: qual é a diferença entre HashMap e Hashtable. Uma Hashtable é uma estrutura de dados para armazenar pares de chaves e seus valores, baseada em hash e em uma implementação da interface Map. HashMap também é uma estrutura de dados para armazenamento de chaves e valores, baseada em hashing e uma implementação da interface Map. HashMap permite obter rapidamente um valor por chave. Por exemplo, o nome e o número de telefone do usuário. Existem diferenças significativas entre HashMap e Hashtable em Java . Isso inclui segurança de thread, sincronização e consistência de implementação de mapa. É importante considerar estes aspectos ao escolher o tipo de estrutura de dados a ser usada em seu programa Java: Um HashMap é um mapa não sincronizado e não ordenado de pares chave-valor. Ele permite valores nulos e usa um código hash como verificação de igualdade, enquanto Hashtable é um mapa ordenado sincronizado de pares de valores-chave. Ele não permite valores nulos e usa o método equals() para verificar a igualdade. Um HashMap tem uma capacidade padrão de 16 e um Hashtable tem uma capacidade inicial padrão de 11. Os valores de um objeto HashMap são iterados usando um iterador, e Hashtable é a única classe além de um vetor que usa um enumerador para iterar sobre os valores de um objeto Hashtable. Lembre-se de que as diferenças entre HashMap e Hashtable é uma das questões mais populares nas entrevistas Java.Como encontrar e corrigir NullPointerException em Java
Fonte: Theflashreads Depois de ler este artigo, você será mais capaz de encontrar e corrigir um erro comum no código Java - NullPointerException.O que é uma NullPointerException?
java.lang.NullPointerException é uma exceção de tempo de execução em Java. Ocorre quando é feita uma tentativa de acesso a uma variável que não aponta ou se refere a nenhum objeto, ou seja, é nula. Como NullPointerException é uma exceção em tempo de execução, ela não precisa ser capturada e tratada explicitamente no código do aplicativo.Em que circunstâncias ocorre uma NullPointerException?
NullPointerException ocorre quando é feita uma tentativa de acessar um objeto não inicializado. Como já mencionado, isso acontece quando a referência do objeto não leva a lugar nenhum e possui um valor nulo. Aqui estão alguns dos cenários de exceção NullPointerException mais comuns :- Acesse propriedades de um objeto nulo.
- Lançando null de um método que lança uma exceção.
- Configuração incorreta para estruturas de injeção de dependência, por exemplo: (Spring).
- Passando parâmetros nulos para um método.
- Chamando métodos em um objeto nulo.
- Usando sincronizado em um objeto nulo.
- Acesse o elemento de índice (por exemplo, em uma matriz) de um objeto nulo.
Exemplo NullPointerException
Neste exemplo, estamos tentando chamar o método printLength , que recebe uma string como parâmetro e imprime seu comprimento. Se o valor da string que é passada como parâmetro for nulo, será lançada uma java.lang.NullPointerException .public class NullPointerExceptionExample {
private static void printLength(String str) {
System.out.println(str.length());
}
public static void main(String args[]) {
String nullString = null;
printLength(nullString);
}
}
Exception in thread "main" java.lang.NullPointerException
at NullPointerExceptionExample.printLength(NullPointerExceptionExample.java:3)
at NullPointerExceptionExample.main(NullPointerExceptionExample.java:8)
Como evitar lançar NullPointerException
NullPointerException pode ser evitado usando as seguintes verificações e métodos preventivos:-
Certifique-se de que um objeto seja inicializado corretamente adicionando uma verificação nula antes de acessar seus métodos ou propriedades.
-
Use Apache Commons StringUtils para operações de string: por exemplo, StringUtils.isNotEmpty() para verificar se uma string está vazia antes de usá-la novamente.
import org.apache.commons.lang3.StringUtils; public class NullPointerExceptionExample { private static void printLength(String str) { if (StringUtils.isNotEmpty(str)) { System.out.println(str.length()); } else { System.out.println("This time there is no NullPointerException"); } } public static void main(String args[]) { String nullString = null; printLength(nullString); } }
-
Use primitivos em vez de objetos sempre que possível, pois eles não podem ter referências nulas. Por exemplo, use int em vez de Integer e boolean em vez de Boolean .
-
Certifique-se de verificar seu código. Isso reduzirá a probabilidade de um NullPointerException ser lançado .
GO TO FULL VERSION