Java8 stream().map()将对象转换为其他对象

x33g5p2x  于2021-12-24 转载在 Java  
字(4.8k)|赞(0)|评价(0)|浏览(799)

Java8 stream().map()将对象转换为其他对象

1: 将对象List转为List

  1. public class user{
  2. private String name;
  3. private String password;
  4. private String address;
  5. private String age;
  6. }
  1. List<String> name= user.stream().map(x -> x.getName()).collect(Collectors.toList());

2: 将List 转为对象list

  1. List<User> result = staff.stream().map(name-> {
  2. User user= new User();
  3. user.setName(name);
  4. user.setPassword(null);
  5. user.setAddress(null);
  6. user.setAge(null);
  7. return user;
  8. }).collect(Collectors.toList());

3:将一个对象List转为另一个对象List

  1. public class UserInfo {
  2. private String name;
  3. private String pwd;
  4. }
  5. // 需指定对应字段
  6. List<UserInfo> collect = userList.stream().map(l -> new UserInfo(l.getName(), l.getPassword())).collect(Collectors.toList());

Java 8 Streams map() 示例

在Java 8中stream().map(),您可以将对象转换为其他对象。查看以下示例:

1.大写字符串列表

1.1简单的Java示例将Strings列表转换为大写。

TestJava8.java

  1. package com.mkyong.java8;
  2. import java.util.ArrayList;
  3. import java.util.Arrays;
  4. import java.util.List;
  5. import java.util.stream.Collectors;
  6. public class TestJava8 {
  7. public static void main(String[] args) {
  8. List<String> alpha = Arrays.asList("a", "b", "c", "d");
  9. //Before Java8
  10. List<String> alphaUpper = new ArrayList<>();
  11. for (String s : alpha) {
  12. alphaUpper.add(s.toUpperCase());
  13. }
  14. System.out.println(alpha); //[a, b, c, d]
  15. System.out.println(alphaUpper); //[A, B, C, D]
  16. // Java 8
  17. List<String> collect = alpha.stream().map(String::toUpperCase).collect(Collectors.toList());
  18. System.out.println(collect); //[A, B, C, D]
  19. // Extra, streams apply to any data type.
  20. List<Integer> num = Arrays.asList(1,2,3,4,5);
  21. List<Integer> collect1 = num.stream().map(n -> n * 2).collect(Collectors.toList());
  22. System.out.println(collect1); //[2, 4, 6, 8, 10]
  23. }
  24. }

2.对象列表 - >字符串列表

2.1 namestaff对象列表中获取所有值。

Staff.java

  1. package com.mkyong.java8;
  2. import java.math.BigDecimal;
  3. public class Staff {
  4. private String name;
  5. private int age;
  6. private BigDecimal salary;
  7. //...
  8. }

TestJava8.java

  1. package com.mkyong.java8;
  2. import java.math.BigDecimal;
  3. import java.util.ArrayList;
  4. import java.util.Arrays;
  5. import java.util.List;
  6. import java.util.stream.Collectors;
  7. public class TestJava8 {
  8. public static void main(String[] args) {
  9. List<Staff> staff = Arrays.asList(
  10. new Staff("mkyong", 30, new BigDecimal(10000)),
  11. new Staff("jack", 27, new BigDecimal(20000)),
  12. new Staff("lawrence", 33, new BigDecimal(30000))
  13. );
  14. //Before Java 8
  15. List<String> result = new ArrayList<>();
  16. for (Staff x : staff) {
  17. result.add(x.getName());
  18. }
  19. System.out.println(result); //[mkyong, jack, lawrence]
  20. //Java 8
  21. List<String> collect = staff.stream().map(x -> x.getName()).collect(Collectors.toList());
  22. System.out.println(collect); //[mkyong, jack, lawrence]
  23. }
  24. }

对象列表 - >其他对象列表

3.1此示例说明如何将staff对象列表转换为对象列表StaffPublic

Staff.java

  1. package com.mkyong.java8;
  2. import java.math.BigDecimal;
  3. public class Staff {
  4. private String name;
  5. private int age;
  6. private BigDecimal salary;
  7. //...
  8. }

StaffPublic.java

  1. package com.mkyong.java8;
  2. public class StaffPublic {
  3. private String name;
  4. private int age;
  5. private String extra;
  6. //...
  7. }

3.2 Java 8之前。

BeforeJava8.java

  1. package com.mkyong.java8;
  2. import java.math.BigDecimal;
  3. import java.util.ArrayList;
  4. import java.util.Arrays;
  5. import java.util.List;
  6. public class BeforeJava8 {
  7. public static void main(String[] args) {
  8. List<Staff> staff = Arrays.asList(
  9. new Staff("mkyong", 30, new BigDecimal(10000)),
  10. new Staff("jack", 27, new BigDecimal(20000)),
  11. new Staff("lawrence", 33, new BigDecimal(30000))
  12. );
  13. List<StaffPublic> result = convertToStaffPublic(staff);
  14. System.out.println(result);
  15. }
  16. private static List<StaffPublic> convertToStaffPublic(List<Staff> staff) {
  17. List<StaffPublic> result = new ArrayList<>();
  18. for (Staff temp : staff) {
  19. StaffPublic obj = new StaffPublic();
  20. obj.setName(temp.getName());
  21. obj.setAge(temp.getAge());
  22. if ("mkyong".equals(temp.getName())) {
  23. obj.setExtra("this field is for mkyong only!");
  24. }
  25. result.add(obj);
  26. }
  27. return result;
  28. }
  29. }

输出

  1. [
  2. StaffPublic{name='mkyong', age=30, extra='this field is for mkyong only!'},
  3. StaffPublic{name='jack', age=27, extra='null'},
  4. StaffPublic{name='lawrence', age=33, extra='null'}
  5. ]

3.3 Java 8的例子。

NowJava8.java

  1. package com.mkyong.java8;
  2. package com.hostingcompass.web.java8;
  3. import java.math.BigDecimal;
  4. import java.util.Arrays;
  5. import java.util.List;
  6. import java.util.stream.Collectors;
  7. public class NowJava8 {
  8. public static void main(String[] args) {
  9. List<Staff> staff = Arrays.asList(
  10. new Staff("mkyong", 30, new BigDecimal(10000)),
  11. new Staff("jack", 27, new BigDecimal(20000)),
  12. new Staff("lawrence", 33, new BigDecimal(30000))
  13. );
  14. // convert inside the map() method directly.
  15. List<StaffPublic> result = staff.stream().map(temp -> {
  16. StaffPublic obj = new StaffPublic();
  17. obj.setName(temp.getName());
  18. obj.setAge(temp.getAge());
  19. if ("mkyong".equals(temp.getName())) {
  20. obj.setExtra("this field is for mkyong only!");
  21. }
  22. return obj;
  23. }).collect(Collectors.toList());
  24. System.out.println(result);
  25. }
  26. }

输出

  1. [
  2. StaffPublic{name='mkyong', age=30, extra='this field is for mkyong only!'},
  3. StaffPublic{name='jack', age=27, extra='null'},
  4. StaffPublic{name='lawrence', age=33, extra='null'}
  5. ]

相关文章

最新文章

更多