streamlist转map(stream list转string)

http://www.itjxue.com  2023-01-25 17:48  来源:未知  点击次数: 

list,map,set三个接口存储元素时各有什么特点

1、Set存储元素特点:不允许有重复的元素

add方法有一个boolean的返回值,当集合中没有某个元素,此时add方法可成功加入该元素时,则返回true;当集合含有与某个元素equals相等的元素时,此时add方法无法加入该元素,返回结果为false。

2、List存储元素特点:有先后顺序,允许有相同的元素

多次调用add(Object)方法时,每次加入的对象按先来后到的顺序排序,也可以插队,即调用add(int?index,Object)方法,就可以指定当前对象在集合中的存放位置。

3、Map存储元素特点:提供key到value的映射,value可多值

Map是双列的集合,存放用put方法:put(obj?key,obj?value),每次存储时,要存储一对key/value,不能存储重复的key,这个重复的规则也是按equals比较相等。

List与Set都是单列元素的集合,它们有一个功共同的父接口Collection。Map没有继承Collection接口,Map提供key到value的映射。Map接口提供3种集合的视图,Map的内容可以被当作一组key集合,一组value集合,或者一组key-value映射。

扩展资料:

1、List接口实现类

LinkedList,ArrayList,Vector

2、Set接口实现类:

HashSet(底层由HashMap实现),LinkedHashSet

3、Map接口实现类:

HashMap,HashTable,LinkeHashMap

参考资料来源:百度百科-Collection接口

将List进行分组后结果返回Map结果集

//将String转换成jsonObject或Map

JSONObject originalJsonData = JSONObject.parseObject(jsonStr);

JSONArray dataArray = originalJsonData.getJSONArray();

ListJSONObject jsonObjectList = new ArrayList();

//将原始数据中的json数组中的json对象存到一个list集合中

????for (Object o : dataArray) {

????????? jsonObjectList.add((JSONObject) o);

????}

?//对集合中的json对象进行分组

?//然后返回一个map集合,key代表组名,value代表该组中的数据

?MapString, ListJSONObject groupByLineNumData = jsonObjectList.stream() .collect(Collectors.groupingBy(x - x.getString("line_num")));

?//遍历所有的分组,对每组内的JSON对象进行排序

????for (String s : groupByLineNumData.keySet()) {

????????ListJSONObject list = groupByLineNumData.get(s);

? ? ? ? JSONArray jsonSorted = jsonArraySort(list.toString());

? ? ? ?//后续有对排序后的json对象的业务操作

? ? ? ?//这里只将它输出

????????System.out.println(jsonSorted);

????????}

List,Map,Set三个接口存取元素时,各有什么特点

(一)List

1、可以允许重复的对象。

2、可以插入多个null元素。

3、是一个有序容器,保持了每个元素的插入顺序,输出的顺序就是插入的顺序。

4、常用的实现类有 ArrayList、LinkedList

Vector。ArrayList

最为流行,它提供了使用索引的随意访问,而

LinkedList

则对于经常需要从

List

中添加或删除元素的场合更为合适。

(二)Set

1、不允许重复对象。

2、无序容器,你无法保证每个元素的存储顺序,TreeSet通过

Comparator

或者

Comparable。

3、只允许一个

null

元素。

4、Set

接口最流行的几个实现类是

HashSet、LinkedHashSet

以及

TreeSet。最流行的是基于

HashMap

实现的

HashSet。

(三)map

1、Map不是collection的子接口或者实现类。Map是一个接口。

2、Map

每个

Entry

都持有两个对象,也就是一个键一个值,Map

可能会持有相同的值对象但键对象必须是唯一的。

3.、TreeMap

也通过

Comparator

或者

Comparable

维护了一个排序顺序。

4.、Map

里你可以拥有随意个

null

值但最多只能有一个

null

键。

5、Map

接口最流行的几个实现类是

HashMap、LinkedHashMap、Hashtable

TreeMap。(HashMap、TreeMap最常用)。

扩展资料

list和set、map之间的转化方式:

1、list转成set集合

Set

studentSet=studentList.stream().map(Student::getId).collect(Collectors.toSet());

2、list转成map

Map

studentMap=studentList.stream().collect(Collectors.toMap(Student::getId,a

-

a,(k1,k2)-k1));

3、list转成map并且根据student中的name进行分组

MapString,List

group=studentList.stream().collect(Collectors.groupingBy(Student::getName));

参考资料:百度百科-java集合

大数据量时取两个List的交集和并集

对于list1和list2,需要求这两个list的交集和并集操作

我们知道list本身自带了retainAll来实现? ?list1.retainAll(list2)

这种方式在list都比较小的情况下还是可以接受的,但是在大数据量时,这种就速度比较慢了,40万数据量大概需要10分钟,所以需要考虑另外一种方式去处理

在jdk1.8中,有一种方式是通过stream流的处理把list转换成map,再对map进行处理,我们知道,map的底层都是数组加链表的形式来实现的,通常情况下,它的查找效率和写入效率都是O(1)的

map = list.stream().collect(Collectors.toMap((key值)bean::getOrderNo, (这块存value值)bean - bean))

然后再对map进行处理,有一个需要注意的就是转换的时候需要保证list中的值必须非空,并且没有重复数据

JDK8对List进行分组操作(stream的groupby)

对List进行分组,也可以理解为将List转换为Map集合。

group by生成一个拥有分组功能的Collector,有三个重载方法。

2.1 可以对结果进行映射

2.2 可以对结果进行求和

2.3 对结果的统计

如果kv是唯一对应的,可以使用Collectors.toMap来实现。

推荐阅读:JDK8中List转换为Map

JDK1.8新特性——Collector接口和Collectors工具类

如何取出list数据放入map

遍历List,添加进Map就可以了。如下伪代码:

ListString strList = {"a","b","c"};

MapInteger,String map = new HashMapInteger,String();

for(int i=1; i=strList.size();i++){

map.put(i,strList.get(i));

}

(责任编辑:IT教学网)

更多

相关服务器空间文章

推荐服务器空间文章