jdk8中,遍历一个集合都是循环的方式,从第一个数据遍历到最后一个数据,但是遍历不是唯一的方式。为了让遍历的方式更加优雅,出现了流 stream。
下面小编展示一下具体用法:
/**
* @author:
* @description:
* @date: 2022/3/11
**/
public class StreamTest {
@Builder
@Data
static class Card {
private final String name;
private final String sex;
}
public static void main(String[] args) {
List<Card> list = new ArrayList<> ();
Card card1 = Card.builder().name("1").sex("11").build();
Card card2 = Card.builder().name("1").sex("22").build();
Card card3 = Card.builder().name("3").sex("33").build();
list.add(card1);
list.add(card2);
list.add(card3);
// 通过stream() 输出list中,每个元素的name, sex 值
List<String> collectName = list.stream().map(Card::getName).collect(Collectors.toList());
List<String> collectSex = list.stream().map(Card::getSex).collect(Collectors.toList());
System.out.println("====collectName: " + collectName);
System.out.println("====collectSex: " + collectSex);
//通过stream() 输出list中,name值等于1的第一个元素
Optional<Card> first = list.stream().filter(item -> {
return "1".equals(item.getName());
}).findFirst();
System.out.println("====first: " + first.get());
//通过stream() 输出list中,所有name值等于1的元素
List<Card> collect = list.stream().filter(item -> {
return "1".equals(item.getName());
}).collect(Collectors.toList());
System.out.println("====collect: " + collect);
}
}
输出:
"C:\Program Files (x86)\Java\jdk1.8.0_31\bin\java.exe"....
====collectName: [1, 1, 3]
====collectSex: [11, 22, 33]
====first: StreamTest.Card(name=1, sex=11)
====collect: [StreamTest.Card(name=1, sex=11), StreamTest.Card(name=1, sex=22)]
Process finished with exit code 0