Java 零散知识

栏目: Java · 发布时间: 5年前

内容简介:Java 8 中,HashMap 是由哈希数组+链表+红黑树组成的,也就是哈希数组、哈希表、链表散列,意思就是数组不是紧密排列的。每个数组元素对应一种不同的hash值,但是不同的hash值可能会映射到数组的同一下标(即哈希冲突)。因为put(K key,V value)方法:添加键值对key-value,如果存在键key,则value覆盖oldValue,并返回oldValue。先通过键key,利用哈希函数hashCode()等操作,获取hash值,然后根据hash值得到映射到数组的下标,再判断key键是不

Java 零散知识

Java 8 中,HashMap 是由哈希数组+链表+红黑树组成的,也就是哈希数组、哈希表、链表散列,意思就是数组不是紧密排列的。每个数组元素对应一种不同的hash值,但是不同的hash值可能会映射到数组的同一下标(即哈希冲突)。因为

n = tab.length
tab[i = (n - 1) & hash]

put(K key,V value)方法:添加键值对key-value,如果存在键key,则value覆盖oldValue,并返回oldValue。先通过键key,利用哈希函数hashCode()等操作,获取hash值,然后根据hash值得到映射到数组的下标,再判断key键是不是存在此下标中。

两个对象的hashCode相同,equals不一定相同;两个对象equals相同,hashCode一定相同。所以,重写equals()方法,一定要重写hashCode()方法。

get(Object key)方法:返回键key对应的value值,如果不存在键key,返回null。

以上两个方法都是找key,然后就直接获得附加的value值了。

https://blog.csdn.net/laoxingyao/article/details/81252977

Java clone

https://blog.csdn.net/zhangjg_blog/article/details/18369201

抽象类\抽象方法

https://blog.csdn.net/qq_33567641/article/details/80986235

Optional 使用

Optional.ofNullable(entities)
                .orElse(Collections.emptyList())
                .stream()
                .map(this::copyValueFromEntity2Dto)
                .collect(Collectors.toList());

##IntStream迭代索引

Map<String, Boolean> retMap = IntStream.range(0, skuList.size())
               .mapToObj(i -> Pair.of(skuList.get(i).getSkuId(), purchased.get(i)))
               .collect(Collectors.toMap(Pair::getLeft, Pair::getRight));

POJO

POJO(Plain Ordinary Java Object)简单的 Java 对象,实际就是普通JavaBeans,是为了避免和EJB混淆所创造的简称。使用POJO名称是为了避免和EJB混淆起来, 而且简称比较直接. 其中有一些属性及其getter setter方法的类,没有业务逻辑,有时可以作为VO(value -object)或dto(Data Transform Object)来使用.当然,如果你有一个简单的运算属性也是可以的,但不允许有业务方法,也不能携带有connection之类的方法。

函数接口

import java.util.function.*;
BiConsumer<T, U>
Function<T, R>
BiFunctionM<T, R, U>
@FunctionalInterface

https://www.ibm.com/developerworks/cn/java/j-java8idioms7/index.html

Supplier

接收一个函数,返回值类型为 T

public void abc(Supplier<T> fun){
    fun.get();
}
abc(Class1::func1);

##Jackson - Annotations

@JsonIgnore 注解用来忽略某些字段,可以用在Field或者Getter方法上,用在Setter方法时,和Filed效果一样。这个注解只能用在POJO存在的字段要忽略的情况,不能满足现在需要的情况。

@JsonIgnoreProperties(ignoreUnknown = true),将这个注解写在类上之后,就会忽略类中不存在的字段,可以满足当前的需要。这个注解还可以指定要忽略的字段。

@JsonInclude 该注解也是放在类名上面,作用是忽略类中字段值为null的当接收的时候。

Mock\Stub

Mock 测试就是在测试过程中,对于某些不容易构造或者不容易获取比较复杂的对象,用一个虚拟的对象来创建以便测试的测试方法。

Mock 与 Stub 的区别?

https://yanbin.blog/mockito-how-to-mock-void-method/#more-7748

EventBus

EventBus 是Google.Guava提供的消息发布-订阅类库,它实现了观察者设计模式,消息通知负责人通过EventBus去注册/注销观察者,最后由消息通知负责人给观察者发布消息。由于EventBus是将消息队列放入到内存中的,listener消费这个消息队列,故系统重启之后,保存或者堆积在队列中的消息丢失。

lombok

@Data :注解在类上;提供类所有属性的 getting 和 setting 方法,此外还提供了equals、canEqual、hashCode、toString 方法。

@Setter:注解在属性上;为属性提供 setting 方法。

@Getter:注解在属性上;为属性提供 getting 方法。

@Builder:构造一个实例,属性不需要单独 Set。

import lombok.Data;
import lombok.Builder;
@Data
@Builder
public class ReportReqDto {
    private String id;
    private Integer age;
    private String name;
}
ReportReqDto.builder().id("1234312312313").age(12).name("test");
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class AbelDeliveryRequestDto {
    private long memberId;
    private String skuId;
    private int quantity;
    private String extra;
    private boolean anonymous;
    private Map<String, String> params = new HashMap<>();
}

Maven 配置:

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.16.10</version>
</dependency>

如果此文章能给您带来小小的提升,不妨小额赞赏我一下,以鼓励我写出更好的文章!

Java 零散知识

微信打赏

Java 零散知识

支付宝打赏


以上所述就是小编给大家介绍的《Java 零散知识》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

智能优化方法

智能优化方法

汪定伟 / 2007-4 / 37.10元

《智能优化方法》主要介绍近年来产生发展的多种智能优化算法。包括为人熟知的遗传算法、禁忌搜索算法、模拟退火算法和蚁群优化算法;近年来已成为研究热点的粒子群优化算法;还有尚待普及的捕食搜索算法和动态环境下的进化计算。书中讨论这些算法的产生和发展、算法的基本思想和理论、基本构成、计算步骤和主要的变形以及数值例子和实际应用。为了方便读者学习,各章之后还附有精选的习题、思考题及相关的参考文献。 本教材......一起来看看 《智能优化方法》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

SHA 加密
SHA 加密

SHA 加密工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具