java中BiConsumer的用法

pom依赖:

<dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
</dependency>

 CalMap类:

package study.com.biconsumer;
import java.util.*;
import java.util.function.BiConsumer;
public class CalMap<T,U> {


    private Map<String,Object> map;

    private List<String> nameList;

    private final BiConsumer<T, U> biConsumer;


    public CalMap(Map<String,Object> map, BiConsumer<T, U> biConsumer) {
        this.map = map;

        this.biConsumer = biConsumer;
    }


    public void transForm(Map<T,U> map){
        map.forEach((key, value) -> {
           biConsumer.accept(key,value);
        });
    }

}
TestBiConsumer测试类:
package study.com.biconsumer;
import org.junit.Test;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class TestBiConsumer {

    private List<String> nameList = new ArrayList<>();

    /**
     * 将 map的 key 和 value 合并,存入List中。
     * @param key
     * @param value
     */
    public void combine(Object key, Object value) {
        if(key instanceof String && value instanceof String){
            String result = key+"_"+value;
            System.out.println("======= result: "+result+"=======");
            nameList.add(result);
        }
    }

    @Test
    public void testBiConsumer(){
        Map<String,Object> map = new HashMap<>();
        map.put("江西省赣州市","张三");
        map.put("江西省鹰潭市","李四");
        CalMap calMap = new CalMap(map,this::combine);
        calMap.transForm(map);
        System.out.println("======集合大小:"+nameList.size());
    }

}

运行结果:

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
BiConsumer是一个函数式接口,它接受两个输入参数并不返回任何结果。下面是一个使用Java 8的BiConsumer的简单示例: 假设我们有一个名为Person的类,它具有两个属性:name和age。我们想要在控制台上打印出每个人的姓名和年龄。我们可以使用BiConsumer接口来实现这个功能,如下所示: ```java import java.util.function.BiConsumer; public class BiConsumerExample { public static void main(String[] args) { BiConsumer<Person, String> printName = (person, prefix) -> System.out.println(prefix + " " + person.getName()); BiConsumer<Person, Integer> printAge = (person, prefix) -> System.out.println(prefix + " " + person.getAge()); Person person1 = new Person("Alice", 25); Person person2 = new Person("Bob", 30); printName.andThen(printAge).accept(person1, "Person 1:"); printName.andThen(printAge).accept(person2, "Person 2:"); } } class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } } ``` 在上面的示例,我们定义了两个BiConsumer实例:printName和printAge。printName将接受Person对象和一个前缀字符串,并打印出该人的姓名,printAge将接受Person对象和一个前缀字符串,并打印出该人的年龄。 我们创建了两个Person对象,person1和person2,然后使用andThen方法将两个BiConsumer实例链接起来,这样我们就可以一次性打印出每个人的姓名和年龄。最后,我们调用accept方法,将每个Person对象和前缀字符串传递给BiConsumer实例。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值