java Guava funtion_guava学习--Function、Predicate

Function用于同步转换。

Predicate用于过滤。

import java.util.Collection;

import java.util.Iterator;

import java.util.List;

import java.util.Map;

import com.google.common.base.Function;

import com.google.common.base.Functions;

import com.google.common.base.Objects;

import com.google.common.base.Predicate;

import com.google.common.collect.Collections2;

import com.google.common.collect.Iterators;

import com.google.common.collect.Lists;

import com.google.common.collect.Maps;

publicclassUser {

private String username;

private String sex;

public User(String username, String sex) {

this.username= username;

this.sex = sex;

}

void setUsername(String username) {

this.username= username;

}

void setSex(String sex) {

this.sex = sex;

}

String getUsername() {

returnusername;

}

String getSex() {

returnsex;

}

@Override

public String toString() {

return Objects.toStringHelper(this).omitNullValues().add("username", username).add("sex", sex).toString();

}

public static void main(String[] args) {

User u1 = new User("malone", "man");

User u2 = new User("lanlan", "woman");

List list = Lists.newArrayList(u1, u2);

// Function 这里用于类型转换

Collection result = Collections2.transform(list, new Function() {

@Override

public String apply(User user) {

if (Objects.equal(user, null)) {

return "";

}

return user.toString();

}

});

for (String ss : result) {

System.out.println(ss);

}

// Predicate 这里是用于过滤

Collection resultUser = Collections2.filter(list, new Predicate() {

@Override

public boolean apply(User user) {

if (Objects.equal(user, null)) {

returnfalse;

}

if (Objects.equal(user.getSex(), "woman")) {

returnfalse;

}

returntrue;

}

});

for (User ss : resultUser) {

System.out.println(ss);

}

Function f1 = new Function() {

@Override

public String apply(User user) {

if (Objects.equal(user, null)) {

return "";

}

return user.getUsername();

}

};

// 多个工具类均可使用类函数式编程

Collection result1 = Collections2.transform(list, f1);

for (String ss : result1) {

System.out.println("1:" + ss);

}

List strList = Lists.transform(list, f1);

for (String ss : strList) {

System.out.println("2:" + ss);

}

Iterator it = Iterators.transform(list.iterator(), f1);

while (it.hasNext()) {

System.out.println("3:" + it.next());

}

Function f2 = new Function() {

@Override

public String apply(String input) {

if (Objects.equal(input, "malone")) {

return"malone's function";

} else {

return"lanlan's function";

}

}

};

// 连接多个Function

//Warning:这里compose方法的参数位置不能颠倒,

//        * Function compose(Function g, Function

//        * 传入Function、Function组合成Function

Function f3 = Functions.compose(f2, f1);

List mylist = Lists.transform(list, f3);

System.out.println(mylist.get(0));

Map map = Maps.newHashMap();

map.put("1", "2");

// Functions可以转换一下map,使用语义更直白的代码,并提供默认值支持

Function lookup = Functions.forMap(map, "default value");

System.out.println(lookup.apply("1"));

}

}

Predicates:

Map map = new HashMap() {

{

put("love the age", new Girl(18, "not so nice"));

put("love the face", new Girl(16, "so nice"));

}

};

Function function = Functions.forMap(map);

Predicate predicate = new Predicate() {

@Override

public boolean apply(Girl input) {

return input.getAge() >= 18;

}

};

Predicate result = Predicates.compose(predicate, function);

return result;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值