这篇文章主要介绍了关于List、Map、Stream初始化方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
List、Map、Stream初始化
第一种方法
初始化List
List<string> list = new ArrayList<string><string>();
list.add("string1");
list.add("string2");
list.add("stringN");
初始化Map
Map</String , Object> map = new HashMap</String , Object>();
map.put("key1", "value1");
map.put("key2", "value2");
map.put("keyN", "valueN"); 第二种方法(双括号初始化法/匿名内部类)
初始化List
List<string> list = new ArrayList<string>(){{
add("string1");
add("string2");
add("stringN"); }};
初始化Map
Map</String , String> map = new HashMap</String , Object>(){{
put("keyOne", "valueOne");
put("keyTwo", "valueTwo");
put("keyThree", "valueThree");
}};慎用, 非静态内部类/ 匿名内部类包含了外围实例的引用, 如果拥有比外部类更长的生命周期,
有内存泄露隐患
stream初始化
Map map = Stream.of(1,2,3,4).collect(
Collectors.toMap(x -> x, integer -> integer,(key, value) -> value, HashMap::new));
System.out.println(JSONObject.toJSONString(map));
List list = Stream.of(1,2,3,4).collect(Collectors.toList());
System.out.println(JSONObject.toJSONString(list));利用Array与ArrayList的相互转换方法初始化ArrayList,代码如下:
ArrayList<String> list = new ArrayList(Arrays.asList("banana", "milk", "bacon")); List Stream 常用方法
Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Java 集合运算和表达的高阶抽象(菜鸟教程)。这里的Stream不同于IO中的stream。
声明Student对象
public class Student {
private String name;
private Integer age;
private Integer math;
private Integer english;
//get set
public Student(String name, Integer age, Integer math, Integer english) {
super();
this.name = name;
this.age = age;
this.math = math;
this.english = english;
}
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + ", math=" + math + ", english=" + english + "]";
}
}Stream一些常用的API
public class StreamDemo {
List<Student> list = null;
//初始化数据
@Before
public void beforetest() {
list = Arrays.asList(new Student("Tom", 18, 88, 90), new Student("Jerry", 20, 77, 89),
new Student("Lily", 17, 98, 79), new Student("Lucy", 19, 70, 80), new Student("LiLei", 18, 88, 90),
new Student("HanMeiMei", 21, 87, 79));
}
@Test
public void streamtest() {
// filter 过滤器返回还是一个stream流对象
//查询math成绩大于80的学生并遍历输出
list.stream().filter(e->e.getMath()>80).forEach(System.out::println);//.forEach(e->System.out.println(e))
//统计数量count
System.out.println(list.stream().count());
//如统计总分大于160的人数
System.out.println(list.stream().filter(e->e.getEnglish()+e.getMath()>160).count());
//limit 取前n个值
list.stream().limit(3).forEach(System.out::println);
//skip 跳过前n个
list.stream().skip(2).forEach(System.out::println);
//distinct 去除重复数据
list.stream().distinct().forEach(System.out::println);
//map 映射元素可以对元素进行操作 例如对每个学生年龄加1
list.stream().map(e->{
e.setAge(e.getAge()+1);
return e;
}).forEach(System.out::println);
//sorted 排序
//升序
list.stream().sorted((a,b)->{
return a.getEnglish().compareTo(b.getEnglish());
});
//降序
list.stream().sorted((a,b)->{
return b.getEnglish().compareTo(a.getEnglish());
});
//返回第一个元素
Optional<Student> first = list.stream().findFirst();
System.out.println(first.get());
//返回任意一个元素
System.out.println(list.stream().findAny().get());
//anyMatch 是否匹配任意一元素 检查是否包含名字为Tom的
System.out.println(list.stream().anyMatch(e->e.getName().equals("Tom")));
//allMatch 是否匹配所有元素
System.out.println(list.stream().allMatch(e->e.getName().equals("Tom")));
//noneMatch 是否未匹配所有元素
System.out.println(list.stream().noneMatch(e->e.getName().equals("Tom")));
//findFirst 返回元素中第一个值
Student student = list.stream().findFirst().get();
//findAny 返回元素中任意一个值
Student student1 = list.stream().findAny().get();
//max 返回最大值 查询英语成绩最高的学生
Student student2 = list.stream().max((l1,l2)->l2.getEnglish().compareTo(l1.getEnglish())).get();
//min 最小值 将上面l1,l2位置对调
Student student3 = list.stream().max((l1,l2)->l2.getEnglish().compareTo(l1.getEnglish())).get();
//将流对象转为list
list.stream().filter(e->e.getMath()>80).collect(Collectors.toList());
//将流转未set
list.stream().filter(e->e.getMath()>80).collect(Collectors.toSet());
//对对象中的某项进行统计
IntSummaryStatistics c = list.stream().collect(Collectors.summarizingInt(Student::getEnglish));
System.out.println(c);//IntSummaryStatistics{count=6, sum=507, min=79, average=84.500000, max=90}
}
}以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程学习网。
沃梦达教程
本文标题为:关于List、Map、Stream初始化方式
基础教程推荐
猜你喜欢
- 使用Java和WebSocket实现网页聊天室实例代码 2024-02-25
- springboot下使用shiro自定义filter的个人经验分享 2024-02-27
- Java中EnvironmentAware 接口的作用 2023-01-23
- JSP 动态树的实现 2023-12-17
- 深入理解约瑟夫环的数学优化方法 2024-03-07
- 运用El表达式截取字符串/获取list的长度实例 2023-08-01
- Java编写实现窗体程序显示日历 2023-01-02
- Java+mysql实现学籍管理系统 2023-03-16
- 是否适合从javabean类更新数据库? 2023-11-04
- JavaWeb 实现验证码功能(demo) 2024-04-14
