一.将List集合按照指定size分为若干小list
//基本实现
public static void partition(List<Long> list){
int size = 3;
List<List<Long>> listArr = new ArrayList<>();
int arrSize = list.size() % size == 0? list.size()/size : list.size()/size + 1;
for (int i = 0; i < arrSize; i++) {
List<Long> sub = new ArrayList<>();
for (int j = i * size; j <= size * (i + 1); j++) {
if (j <= list.size() -1) {
sub.add(list.get(i));
}
}
listArr.add(sub);
}
}
//java8
public static void givenList(){
List<Integer> intList = Lists.newArrayList(1,2,3,4,5,6,7,8,9);
Map<Integer, List<Integer>> groups = intList.stream().collect(Collectors.groupingBy(s -> (s - 1)/3));
List<List<Integer>> subSets = new ArrayList<>(groups.values());
}
//guava实现
public static void partition2(List<Long> list){
int size = 16;
List<List<Long>> subSets = Lists.partition(list, size);
}
二、 实现java 中 list集合中有几十万条数据,每100条为一组取出
/**
* 实现java中 List集合中有几十万数据,每100条为一组取出
* @param list
* @return 每一个key中有100条数据的List
*/
public Map<String, List> groupList(List list){
int listSize = list.size();
int toIndex = 100;
Map<String, List> map = new HashMap<>(5000);
int keyToken = 0;
for (int i = 0; i < list.size(); i++) {
/**作为toIndex最后没有100条数据则剩余几条newList中就装几条**/
if (i+100 > listSize){
toIndex = listSize - i;
}
List newList = list.subList(i, i + toIndex);
map.put("keyName"+keyToken, newList);
keyToken++;
}
return map;
}
三、List集合取出某一属性
package com.thai.order;
import org.assertj.core.util.Lists;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author chenmuchao
* @date 2018-04-19 10:06
*/
public class Order {
private int id;
private String name;
public Order(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void convert(){
List<Order> lists = Lists.newArrayList();
Order order = new Order(1, "订单1");
lists.add(order);
Order order1 = new Order(2, "订单2");
lists.add(order1);
Order order2 = new Order(2, "订单3");
lists.add(order2);
List ids = lists.stream().map(Order::getId).collect(Collectors.toList());
System.out.println("ids:" + ids);
List names = lists.stream().map(Order :: getName).collect(Collectors.toList());
System.out.println("names:" + names);
}
}
四、根据条件在List中筛选出符合条件的对象
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Test {
public static void main(String[] args) throws Exception {
Map<Integer,List<People>> map=new HashMap<Integer,List<People>>();
People p1=new People(1,"2");
addPersonToMap(map,p1);
People p2=new People(3,"4");
addPersonToMap(map,p2);
People p3=new People(1,"2");
addPersonToMap(map,p3);
System.out.println(map.get(1));
}
private static boolean addPersonToMap(Map<Integer,List<People>> map,People p1){
boolean flag;
int key=p1.getAge();
if(map.containsKey(key)){
List<People> value=map.get(1);
value.add(p1);
map.put(key, value);
flag=true;
}else{
List<People> value=new ArrayList<People>();
value.add(p1);
map.put(key, value);
flag=false;
}
return flag;
}
}
class People{
int age;
String name;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public People() {
super();
}
public People(int age, String name) {
super();
this.age = age;
this.name = name;
}
}
网友评论