Map的遍历:
java8
public static void main(String[] args) {
Map<String, Object> map = new HashMap<>();
map.put("key1", "value1");
map.put("key2", "value2");
map.put("key3", "value3");
map.put("key4", "value4");
map.put("key5", "value4");
map.forEach((k, v) -> {
System.out.println("map的forEach遍历" + "===" + k + "---" + v);
});
for (String key : map.keySet()) {
System.out.println("map的keySet遍历key" + "===" + key + "---" + map.get(key));
}
Iterator<Map.Entry<String, Object>> it = map.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<String, Object> entry = it.next();
System.out.println("map迭代器遍历" + entry.getKey() + entry.getValue());
}
for (Map.Entry<String, Object> entry : map.entrySet()) {
System.out.println("map迭代器遍历(大量数据)" + entry.getKey() + entry.getValue());
}
for (Object o : map.values()) {
System.out.println("map遍历value值" + o.toString());
}
}
stream流操作list: list转map,以id为key,对象为value,(k1, k2) -> k1) 防止重复
Map<String, Entity> map = list.stream().collect(Collectors.toMap(Entity::getId, Function.identity(), (k1, k2) -> k1));
stream流操作list:list转map:以map中的两个字段做为map的 (key,value)
List<Map<String, Object>> list =new ArrayList<>();
Map<String, String> map= list .stream().collect(Collectors.toMap(a-> a.get("key").toString(), a-> a.get("value").toString()));
stream流操作list:list转map:以对象中的两个字段做为map的 (key,value)
Map<String, String> map = list.stream().collect(Collectors.toMap(Entity::getKey, Entity::getValue));
stream流对list去重:
List<Entity> afterList = list.stream().distinct().collect(Collectors.toList());
stream流对list操作,将其中一个值做key,key对应的值做value集合,类似于MySql的groupBy,但是我公司的MySql不能groupBy,(有遇到类似问题解决过的大佬麻烦评论下):
Map<String, List<String>> map = list.stream().collect(Collectors.groupingBy(Entity::getId, Collectors.mapping(Entity::getName, Collectors.toList())));
对查询结果 list 进行手动分页:
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@Data
@ApiModel("基础分页模型")
public class PageDTO<T> implements Serializable {
@ApiModelProperty("每页数量")
private Long pageSize;
@ApiModelProperty("当前页码")
private Long pageNumber;
@ApiModelProperty("总记录数")
private Long totalRecords;
@ApiModelProperty("总页数")
private Long totalPages;
@ApiModelProperty("具体内容")
private List<T> content;
public PageDTO() {
}
public PageDTO(Long pageSize, Long pageNumber, Long totalRecords, Long totalPages) {
this.pageSize = pageSize;
this.pageNumber = pageNumber;
this.totalRecords = totalRecords;
this.totalPages = totalPages;
}
public PageDTO(Long pageSize, Long pageNumber, Long totalRecords, Long totalPages, List<T> content) {
this.pageSize = pageSize;
this.pageNumber = pageNumber;
this.totalRecords = totalRecords;
this.totalPages = totalPages;
this.content = content;
}
}
public class LambdaUtil {
/**
* @param condition 执行条件
* @param runE condition 为true时执行get方法
*/
public static void conditionHandler(Boolean condition, Run runE) {
if (condition) {
runE.run();
}
}
}
@FunctionalInterface
public interface Run {
void run();
}
private List<Entity> pageBySubList(List<Entity> list, Integer pageSize, Integer pageNumber) {
//总条数
int totalcount = list.size();
List<Entity> afterList = new ArrayList<>();
int total = (pageNumber- 1) * pageSize;
for (int i = total; i < (Math.min(total + pageSize, totalcount)); i++) {
//然后将数据存入afterList中
afterList.add(list.get(i));
}
//然后将处理后的数据集合进行返回
return afterList;
}
private PageDTO<Entity> setPageDTO(List<Entity> entityList, Integer pageSize,Integer pageNumber) {
PageDTO<Entity> pageDTO = new PageDTO<>();
List<Entity> resultList = new ArrayList<>();
long totalPages = Long.valueOf(entityList.size() % pageSize == 0 ? entityList.size() / pageSize : entityList.size() / pageSize + 1);
int start = (pageNumber - 1 * pageSize;
int end = pageNumber * pageSize;
LambdaUtil.conditionHandler(entityList.size() <= start, () -> resultList.addAll(new ArrayList<>()));
LambdaUtil.conditionHandler(entityList.size() > start && entityList.size() <= end, () -> resultList.addAll(entityList.subList(start, entityList.size())));
LambdaUtil.conditionHandler(entityList.size() > start && entityList.size() > end, () -> resultList.addAll(cjProductInfoList.subList(start, end)));
pageDTO.setTotalRecords(Long.valueOf(entityList.size()));
pageDTO.setPageSize(Long.valueOf(pageSize));
pageDTO.setPageNumber(Long.valueOf(pageNumber));
pageDTO.setTotalPages(totalPages);
pageDTO.setContent(resultList);
return pageDTO;
}