gpt4 book ai didi

java - 需要使用java使用lambda表达式打印字符串的最后一位

转载 作者:行者123 更新时间:2023-12-04 01:14:10 25 4
gpt4 key购买 nike

想要使用 lamda 表达式打印字符串的最后一位。使用下面的代码能够打印完整的号码,但想要打印最后一位

public static void main(String[] args) {
List<TestDTO> studs = new ArrayList<>();
studs.add(new TestDTO("101", "Test 101"));
studs.add(new TestDTO("102", "Test 102"));

Map<String, TestDTO> mapDbCardDtl = studs.stream().collect(Collectors.toMap(TestDTO::getId, Function.identity()));

Set<String> s = mapDbCardDtl.keySet();
System.out.println("s: " + s.toString());
}

下面是DTO

public class TestDTO {
String id;
String name;

public TestDTO(String id, String name) {
super();
this.id = id;
this.name = name;
}

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

}

从上面的代码得到的输出

s: [101, 102]

预期输出

S : [1, 2]

最佳答案

您不能使用 Funcion#identity并期望拥有具有修改值的不同实体。一种方法是转换 Map<String, TestDTO>Map<String, String>并使用以下代码:

Map<String, String> mapDbCardDtl = studs
.stream()
.collect(Collectors.toMap(TestDTO::getId,
(testDto) -> String.valueOf(testDto.getId().charAt(testDto.getId().length() - 1))));

Set<String> s = mapDbCardDtl.keySet();
System.out.println("s: " + s.toString());

关于java - 需要使用java使用lambda表达式打印字符串的最后一位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63895155/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com