Java泛型测试示例

Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。

假定我们有这样一个需求:写一个排序方法,能够对整型数组、字符串数组甚至其他任何类型的数组进行排序,该如何实现?

HashMap 及 ConcurrentHashMap 简介

HashMap 数据结构介绍

在最新的 Java 8+ 版本中,HashMap 的物理存储结构已经非常成熟,它被形象地称为 “数组 + 链表 + 红黑树” 的混合体。我们可以用一个 “智能图书馆” 的例子来通俗地解释它的工作原理。

Java开发中常见的问题(一)

空指针问题

使用 Optional<T> 避免空指针

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Optional<User> optionalUser = Optional.ofNullable(user);

// 存在即返回,空则返回默认值
User user1 = optionalUser.orElse(new User());

// 存在即返回,空则由函数产生
User user2 = optionalUser.orElseGet(() -> new User());

// 存在即返回,否则抛异常
User user3 = optionalUser.orElseThrow(() -> new RuntimeException("异常了"));

// 存在就去做相应的处理
optionalUser.ifPresent(u -> System.out.println(u.getName()));

// 对Optional中这个元素做相应的操作,且会返回一个Optional对象(这样就绝对避免了空指针问题)
Integer nameLength = optionalUser.map(u -> u.getName()).map(name -> name.length()).orElse(0);
System.out.println(nameLength);