首页 > 编程语言 >Java集合互转,集合转换

Java集合互转,集合转换

时间:2023-05-25 22:12:39浏览次数:45  
标签:map Java Map List list 互转 集合 new

集合之间的互转

确认JDK是否支持如下集合的转换

Collectors

Objects

参考:

List< T>转Map<String, T>

PHP:

Map<String, T> array_combine(() -> T::getXXX, List<T> list);

Java:

private static <T, R> Map<R, T> arrayCombine(Function<T, R> mapper, List<T> list) {
    Map<R, T> map = new HashMap<>(list.size());
    for (T t : list) {
        map.put(mapper.apply(t), t);
    }
    return map;
}

List<User> userList = new ArrayList<>(2);
User user1 = new User(23, "user1");
User user2 = new User(45, "user2");
userList.add(user1);
userList.add(user2);
Map<String, User> stringUserMap = arrayCombine(User::getName, userList);

List< T>转Map<String, List< T>>

统计某个 key 的集合。

PHP:


Java:

private static <T, R> Map<R, List<T>> countList(Function<T, R> function, List<T> list) {
    Map<R, List<T>> map = new LinkedMap<>();
    for (T t : list) {
        R apply = function.apply(t);
        List<T> tList = map.get(apply);
        if (null == map.get(apply)) {
            tList = new LinkedList<>();
            map.put(apply, tList);
        }
        tList.add(t);
    }
    return map;
}

List< T>转List< String>

PHP:

List<String> array_column(List<T> list, T::getXXX);

类似 array_cloumn,获取集合对象中的某个属性的集合。

private static <T, R> List<R> arrayColumn(Function<T, R> function, List<T> list) {
    return list.stream().map(function).collect(Collectors.toList());
}

包装类型和集合互转

// 包装数据类型转集合
Integer[] integers = new Integer[]{1, 2};
List<Integer> integerList = Arrays.stream(integers).collect(Collectors.toList());
assertEquals(2, integerList.size());
assertEquals(1, (int) integerList.get(0));
assertEquals(2, (int) integerList.get(1));
// 基本数据类型数组转集合
int[] ints = new int[]{1, 2, 3};
List<Integer> integerList1 = Arrays.stream(ints).boxed().collect(Collectors.toList());
assertEquals(3, integerList1.size());
assertEquals(1, (int) integerList1.get(0));
assertEquals(3, (int) integerList1.get(2));

标签:map,Java,Map,List,list,互转,集合,new
From: https://www.cnblogs.com/okbuok/p/17433115.html

相关文章

  • Java 实现的计算器代码
    好的,以下是一个使用Java实现的计算器代码:importjava.util.Scanner;publicclassCalculator{publicstaticvoidmain(String[]args){Scannerinput=newScanner(System.in);doublenum1,num2,result;charoperator;System......
  • Java自定义注解(Annontation)
    (一)注解简介注解(Annontation),Java5引入的新特性,位于java.lang.annotation包中。提供了一种安全的类似注释的机制,用来将任何的信息或元数据(metadata)与程序元素(类、方法、成员变量等)进行关联。是一种说明、配置、描述性的信息,与具体业务无关,也不会影响正常的业务逻辑。但我们可以用反......
  • mongodb(5)--使用Java操作MongoDB
    一、环境的准备1、MongoDB已经安装完成2、java环境准备(1)jdk:oracle官网:https://www.oracle.com/java/technologies/downloads/(2)开发工具:  eclipse官网:https://www.eclipse.org/  idea官网:https://www.jetbrains.com.cn/idea/3、选择MongoDBJDBC驱动https://mongodb.gi......
  • 求一个数所有因子的集合的子集中满足所有数均互质的最大子集
    题意:很明显了,就是把数n的所有因子求出来,在里面挑选一些数,使这些数之间均互质,求这些的最大个数。结论:先讲结论:最大个数为数n的质因数个数加1思路:我们已知一个数的质因数,就可以把这个数表示成若干质因数的乘积,例如:12=2*2*3;其中2,3是12的质因数,表达式中2的个数是2,3的......
  • JavaScript中的生成器函数(Generator Functions)
    简介:生成器函数(GeneratorFunctions)是JavaScript中的一种特殊类型函数,它允许开发者在函数内部产生多个值并逐步返回,与传统函数一次返回单个值的方式不同。本文将介绍生成器函数的特性、优缺点以及如何使用它们,并提供一些代码案例来说明其用法。特性:使用function\*关键字声明:生成......
  • Java面向对象(高级)
    1、类变量类变量是被类的所有实例共享的。类变量具体放的位置在哪?在内存中的那个区域,这和jdk的版本是有关的静态变量在类加载的时候就生成了,即使没有创建类实例也能访问,当然通过实例来实现类变量定义访问修饰符static类型变量名2、类方法1、只需要在普通方法前面加上......
  • java反射代码案例
    反射案例代码点击查看代码packagecom.bh.zoo;publicclassWolfextendsAnimal{publicStringname;publicStringcolor;protectedStringblood;privateintage;publicvoideat(){System.out.println("狼吃肉");}public......
  • Swift中常见的String用法,Array高阶使用,Set集合操作
    String字符串常见用法生成字符串创建字符串letgreeting="Hello,world!"letname=String("John")连接字符串:使用加号(+)或者字符串插值(使用())来将多个字符串连接起来。varfirstName="John"letlastName="Doe"letfullName=firstName+""+las......
  • Java比较两个实体属性值是否相同,将不同的属性输出
    /** *比较两个实体属性值,返回一个map以有差异的属性名为key,value为一个Map分别存oldObject,newObject此属性名的值 *@paramoldObject进行属性比较的对象1 *@paramnewObject进行属性比较的对象2 *@return属性差异比较结果map */ @SuppressWarnings("rawtypes")......
  • JAVA List和Map切割方法
    importorg.springframework.util.CollectionUtils;importjava.util.ArrayList;importjava.util.HashMap;importjava.util.Iterator;importjava.util.List;importjava.util.Map;importjava.util.Set;publicclassCollectionUtil{/***将map切成段,作......