小编Chr*_*ris的帖子

LinkedHashMap entrySet的顺序未保存在流中(Android)

我正在为注册屏幕创建一个非常简单的表单验证实用程序,并且我遇到了一些意外的行为LinkedHashMap和从它创建的流entrySet.

我将验证结果存储在a中LinkedHashMap,具有以下语句顺序:

Map<ValidationResult.SignUpField, Boolean> fieldStatuses = new LinkedHashMap<>();

fieldStatuses.put(EMAIL, isValidEmail(emailAddress));
fieldStatuses.put(USERNAME, isValidUsername(username));
fieldStatuses.put(BIRTHDAY, isValidBirthday(birthday));
fieldStatuses.put(PASSWORD, isValidPassword(password));
fieldStatuses.put(CONFIRM_PASSWORD, password.equals(confirmedPassword));

List<ValidationEntry> invalidFields = aggregateInvalidFields(fieldStatuses);
Run Code Online (Sandbox Code Playgroud)

除了"确认密码"之外,一个特定的迭代产生上述所有字段无效.在条目集上使用简单的for循环并省略有效结果,无效结果按以下顺序显示:

  • 电子邮件
  • 用户名
  • 生日
  • 密码

然后我尝试使用Android上可用的Stream API子集(目标版本25,最小值为19,因此缺少Collectors.toMap()):

private static List<ValidationEntry> aggregateInvalidFields(Map<ValidationResult.SignUpField, Boolean> fields) {
    List<ValidationEntry> invalidFields = new ArrayList<>();
    fields.entrySet()
            .stream()
            .filter(entry -> !entry.getValue())
            .forEachOrdered(entry -> {
                ValidationResult.SignUpField field = entry.getKey();
                invalidFields.add(new ValidationEntry(field, lookUpErrorCode(field)));
            });
    return invalidFields;
}
Run Code Online (Sandbox Code Playgroud)

但该代码产生以下顺序:

  • 生日
  • 密码
  • 用户名
  • 电子邮件

这里究竟发生了什么,为什么流的结果不符合LinkedHashMap?的插入顺序?需要注意的是,如果我换出forEachOrderedforEach,它仍然没有插入排序.

java android linkedhashmap java-stream

7
推荐指数
1
解决办法
543
查看次数

AWS 客户端 VPN 客户端 CIDR 范围的目的?

最初是在 AWS 论坛上提出的,但我感觉很长一段时间都不会收到回复,所以我也在这里提出我的问题:

我最近根据本指南设置了客户端 VPN 。连接后,我可以成功访问互联网以及私有子网中的资源,因此此时我对所有部分如何组合在一起有了基本的了解,除了一个:客户端 CIDR 范围。这个概念给我带来了很多麻烦,我认为它延长了构建时间 2 天,因为我在尝试将其与客户端 VPN 涉及的其他概念连接起来时进行了所有的努力。但当我不完全理解某件事时,它会让我烦恼,所以我对此有一些疑问:

  • 假设范围不与目标网络重叠,那么范围与其所属的 VPC 位于同一 CIDR 范围内是否会受益?为什么或者为什么不?
  • 为什么范围需要为 /22,而目标网络可以小至 /27?这是否意味着由于给定子网中有可用地址,可能会有 2^5 个以上的客户端尝试访问 VPC 中的资源?
  • 在为私有子网设置安全组时,我注意到我必须使用基于目标子网客户端连接登陆的 CIDR 范围的规则,而不是客户端 CIDR 范围 - 这是为什么?

您可能从我的问题中看出,我不是网络管理员。我试图了解这个世界,同时尝试建立有用的基础设施。我的猜测是,对于在该领域有经验的人来说,这些问题的答案是显而易见的,但我就是不明白。

vpn cidr amazon-web-services amazon-vpc

5
推荐指数
1
解决办法
928
查看次数