目录

list集合初始化

map初始化

获取list集合中的最大最小值

list排序

list对象时间排序

treeMap 中(基于key的排序)

TreeMap的按value排序

Map按value排序2

去掉一个list中包含的另一个list数据

String数组转换成List

list对象转对象某属性的list

list对象转成Map

map转list

JSON中string转List

list集合从前面追加数据

list与list互转

将list集合,元素随机打乱

根据下标替换元素

stream api对象过滤空

list使用 stream api去重

List根据某属性删除对象

List获取某属性重复的对象

List根据某属性去重

list根据某属性分组

List分割数据, 例每次请求500条数据


list集合初始化

  • 常用的
import java.util.ArrayList;
import java.util.List;/*** @Author: szw* @Date: 2020/6/3 9:23*/
public class ListTest {public static void main(String[] args) {List<String> languages = new ArrayList<>();languages.add("Java");languages.add("List");languages.add("ArrayList");}
}
  • 匿名内部类,
import java.util.ArrayList;
import java.util.List;/*** @Author: szw* @Date: 2020/6/3 9:23*/
public class ListTest {static String str = "112233";// {{}} 双括号, 外层的 {} 定义了一个匿名内部类。内层的 {} 的定义了一个实例初始化代码块static List<String> list = new ArrayList<String>() {{ // 这个大括号 就是 构造代码块 会在构造函数前 调用this.add("11"); //this 可以省略add("21");add("31");add(str);}};public static void main(String[] args) {System.out.println(list);}
}
  • Arrays 工具类和Collections 工具类,不可变的 List
import java.util.Arrays;
import java.util.Collections;
import java.util.List;/*** @Author: szw* @Date: 2020/6/3 9:23*/
public class ListTest {public static void main(String[] args) {List<String> list = Arrays.asList("Java", "Jdk", "Jre");List<String> list2 = Collections.nCopies(3, "apple");}
}

这种得到的是不可变的 List, 不能增删,如果要可变,那就使用 ArrayList 再包装一下

List<String> list = new ArrayList<>(Arrays.asList("1", "2", "3"));List<String> dogs = new ArrayList<>(Collections.nCopies(3, "dog"));
  • JDK8 Stream,以下都是不常用的了
List<String> colors = Stream.of("blue", "red", "yellow").collect(toList());
  • JDK 9 List.of
List<String> cups = List.of("A", "B", "C");
  • guava
// 不可变集合
List<String> list = ImmutableList.of("Hollis", "hollis", "HollisChuang", "H");

map初始化

    public final static Map<String, String> DUANWEN_MAP_MINGYAN = new HashMap<String, String>() {{put("1","励志名言");put("2","爱情名言");put("3","爱国名言");}};

获取list集合中的最大最小值

Collections.min(list);//获取最小值
Collections.max(list);//获取最大值

list排序

// JDK1.8以前的老用法,之前一直这样写
Collections.sort(books,new Comparator<Book>() {@Overridepublic int compare(Book o1, Book o2) {// TODO Auto-generated method stubreturn o1.getBookPrice() - o2.getBookPrice();}});// JDK1.8
Collections.sort(books,(Book a, Book b) -> { return a.getBookPrice()-b.getBookPrice(); });// 简写1
Collections.sort(books,(Book a, Book b) ->  a.getBookPrice()-b.getBookPrice()); // 正序
Collections.sort(books,(Book a, Book b) ->  b.getBookPrice()-a.getBookPrice()); // 倒序
// 简写2
Collections.sort(list, Comparator.comparingInt(Channel::getChnumber)); // 正序list.sort(Comparator.comparing(User::getSex)); // 正序
list.sort(Comparator.comparing(User::getSex, Comparator.reverseOrder()) // 倒叙.thenComparing(User::getLevel, Comparator.reverseOrder())); // 倒叙

list对象时间排序

    static void getSort(List<StatisticsVo> totalList) {Collections.sort(totalList, (StatisticsVo a, StatisticsVo b) -> {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");Date aParse = null;Date bParse = null;try {aParse = sdf.parse(a.getDayTimeString());bParse = sdf.parse(b.getDayTimeString());} catch (ParseException e) {e.printStackTrace();}return bParse.compareTo(aParse); // 倒叙});}

treeMap 中(基于key的排序)

treeMap默认的是基于key的从小到大 的排列
自定义排序也是基于key的,如果key object类型 可以自定义各种排序TreeMap<String, Person> treeMap = new TreeMap<>((String a,String b)-> b.compareTo(a));//降序
TreeMap<String, Person> treeMap = new TreeMap<>((String a,String b)-> a.compareTo(b));//升序

TreeMap的按value排序

(转换成entry list 然后排序)汉字是按ascii码排序的,不是汉语拼音User p1 = new User(1, "A小红");
User p2 = new User(5, "D赵明");
User p3 = new User(2, "W孙宇");
User p4 = new User(9, "C黎明");TreeMap<String, User> treeMap = new TreeMap<>();treeMap.put("45", p1);
treeMap.put("12", p2);
treeMap.put("85", p3);
treeMap.put("33", p4);List<Map.Entry<String, User>> entries = new ArrayList<>(treeMap.entrySet());Collections.sort(entries,(Map.Entry<String, User> e1, Map.Entry<String, User> e2) -> ((User) e1.getValue()).getUserName().compareTo(((User) e2.getValue()).getUserName()));
System.out.println("按名字顺序排列");
for (Entry<String, User> entry : entries) {System.out.println(entry.getValue());}

Map按value排序2

JSONObject parse = (JSONObject) JSONObject.parse(data.getOptionName());Map<String, Object> innerMap = parse.getInnerMap();List<Map.Entry<String, Object>> entries = new ArrayList<>(innerMap.entrySet());Collections.sort(entries, Comparator.comparing((Map.Entry<String, Object> e) -> (Integer.valueOf((String) e.getValue()))));

去掉一个list中包含的另一个list数据

HashSet<Channel> h1 = new HashSet<>(list);
HashSet<Channel> h2 = new HashSet<>(list2);
h1.removeAll(h2);
list.clear();
list.addAll(h1);

String数组转换成List<Integer>

List<Integer> list= Arrays.asList((Integer[]) ConvertUtils.convert(stringArray, Integer.class));// 将String数组转成Integer数组
Integer[] interArray = (Integer[])ConvertUtils.convert(stringArray, Integer.class);// String数组转int数组
int[] array = Arrays.asList(strings).stream().mapToInt(Integer::parseInt).toArray();
int[] array = Arrays.stream(strings).mapToInt(Integer::parseInt).toArray();

list对象转对象某属性的list

List<String> ids = list.stream().map(User::getId).collect(Collectors.toList());

list对象转成Map

public static Map<Object, Object> getListToObjectMap(List<Student> list) {Map<Object, Object> map = list.stream().collect(Collectors.toMap(Student::getStuId, student -> student));map.forEach((key, value) -> {System.out.println("key:" + key + ",value:" + value);});return map;}

map转list

Map<String, String> map = new HashMap<>();
// Convert all Map keys to a List
List<String> result = new ArrayList(map.keySet());
// Convert all Map values to a List
List<String> result2 = new ArrayList(map.values());
// Java 8, Convert all Map keys to a List
List<String> result3 = map.keySet().stream().collect(Collectors.toList());
// Java 8, Convert all Map values  to a List
List<String> result4 = map.values().stream().collect(Collectors.toList());
// Java 8, seem a bit long, but you can enjoy the Stream features like filter and etc.
List<String> result5 = map.values().stream().filter(x -> !"apple".equalsIgnoreCase(x)).collect(Collectors.toList());

JSON中string转List<String>

List<String> pList = JSON.parseArray(svcCont4PlaceHolderReq.getMarksList(),String.class);

list集合从前面追加数据

    public static void main(String[] args) {List<String> list = new ArrayList<>();list.add("1111");list.add("2222");System.out.println(list); // [1111, 2222]list.add(0, "qqqqq");System.out.println(list); // [qqqqq, 1111, 2222]}

list<Integer>与list<String>互转

List<String> stringList = intList.stream().map(String::valueOf).collect(Collectors.toList());List<Integer> codesInteger = codes.stream().map(Integer::parseInt).collect(Collectors.toList());

将list集合,元素随机打乱

2021-07-14更新

  • static void shuffle(List<?> list)  使用默认随机源对列表进行置换,所有置换发生的可能性都是大致相等的。
  • static void shuffle(List<?> list, Random rand) 使用指定的随机源对指定列表进行置换,所有置换发生的可能性都是大致相等的,假定随机源是公平的。
Collections.shuffle(list); Random rand=new Random(47);
Collections.shuffle(list,rand);

根据下标替换元素

jsonArray.set(i, jsonObject);

stream api对象过滤空

Set<Long> collect = list.stream().map(DO::getMainId).filter(Objects::nonNull).collect(Collectors.toSet());Set<Long> collect = list.stream().filter(Objects::nonNull).collect(Collectors.toSet());

Objects::nonNull, 或filter(StringUtils::isNotBlank)判断字符串(import org.apache.commons.lang.StringUtils;)

list使用 stream api去重

常用的去重list转set, stream也有对应的api, 注意对象的话需要重写equals and hashcode0

List<String> newList = list.stream().distinct().collect(Collectors.toList());

2022-06-30更新

List根据某属性删除对象

jdk 1.8 的集合类 removeIf() 方法用于删除所有满足特定条件的数组元素。语法; arraylist.removeIf(Predicate<E> filter)

        List<User> newList = userList.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(User::getCode))), ArrayList::new));
userList.removeIf(user -> user.age > 50);

List获取某属性重复的对象

根据名字分组统计, 获取到名字重复数大于1的名字列表(groupingBy的值不能为空)

         List<String> userNameList = userList.stream().filter(f -> StringUtils.isNotBlank(f.getName())).collect(Collectors.groupingBy(User::getName, Collectors.counting())).entrySet().stream().filter(e -> e.getValue() > 1).map(Map.Entry::getKey).collect(Collectors.toList());

过滤一下

List<User> list = userList.stream().filter(f -> userNameList.contains(f.getName())).collect(Collectors.toList());

List根据某属性去重

        List<User> newList = userList.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(User::getCode))), ArrayList::new));

2022-12-13补充

list根据某属性分组

Map<String, List<Student>> map = students.stream().collect(Collectors.groupingBy(Student::getName));

更多java常用知识点整理:java常用知识点整理_瑶山的博客-CSDN博客_java知识点整理

2023-2补充

List分割数据, 例每次请求500条数据

import com.google.common.collect.Lists;
// 代码模拟List<List<String>> partition = Lists.partition(idList, 500);for (List<String> list : partition) {query.setUserIds(list);response = queryList(query);}

java-List集合初始化的几种方式与一些常用操作-持续更新相关推荐

  1. JAVA中集合输出的四种方式

    在JAVA中Collection输出有四种方式,分别如下: 一) Iterator输出. 该方式适用于Collection的所有子类. public class Hello {public stati ...

  2. java对集合遍历的四种方式

    目录 文章目录 目录 1.背景 2.添加集合 3.遍历集合 3.1 普通循环遍历 3.2 迭代器遍历 3.3 增强for遍历(foreach) 3.4 list.forEach 4.总结 1.背景 目 ...

  3. List集合初始化的几种方式

    先创建出List再做赋值操作,如下: List<Integer> list = new ArrayList<>();list.add(1);list.add(2);list.a ...

  4. java中集合遍历的几种方式

    迭代器Iterator使用 Collection接口遍历元素使用Iterator(称为迭代器),所有实现Collection接口的集合类都有一个Iterator()方法,只能用于遍历集合. List ...

  5. java类初始数组_java中数组初始化的三种方式是什么

    java中数组初始化的三种方式是:1.静态初始化,如[int a[] = {2, 0, 1, 9, 2020}]:2.动态初始化,如[int[] c = new int[4]]:3.默认初始化,如[i ...

  6. java的list遍历_【java】list集合遍历的5种方式

    平凡也就两个字: 懒和惰; 成功也就两个字: 苦和勤; 优秀也就两个字: 你和我. 跟着我从0学习JAVA.spring全家桶和linux运维等知识,带你从懵懂少年走向人生巅峰,迎娶白富美! 关注微信 ...

  7. Map集合遍历的四种方式理解和简单使用

    Map集合遍历的四种方式理解和简单使用 ~Map集合是键值对形式存储值的,所以遍历Map集合无非就是获取键和值,根据实际需求,进行获取键和值 1:无非就是通过map.keySet()获取到值,然后根据 ...

  8. 遍历集合常见的两种方式

    package sun;import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.u ...

  9. java读取csv文件的两种方式

    java读取csv文件的两种方式 1.CsvReader读取 import com.csvreader.CsvReader; /*** CsvReader 读取* @param filePath* @ ...

最新文章

  1. 原来,王兴是理想汽车的「二当家」!股份只比李想少1.6%丨理想汽车招股书
  2. urlencode urldecode
  3. OpenGL Compute Shader Image Processing计算着色器图像处理的实例
  4. 微信小程序把玩(三)tabBar底部导航
  5. *【HDU - 6201】transaction transaction transaction(树形dp 或 spfa最长路 或 网络流)
  6. golang时间类型转换
  7. 重磅!Facebook 更新 PyTorch 1.1,打算跨 GPU 分割神经网络 | 技术头条
  8. Solr集群的搭建以及使用(内涵zookeeper集群的搭建指南)
  9. 华为某员工发飙:深圳房东又涨三百房租,感觉混不下去了
  10. ios7 获取UITablleViewCell
  11. codeforces 914 D Bash and a Tough Math Puzzle
  12. 2020年河南对口升学计算机类专业课试卷,2009年河南对口升学计算机专业试卷专业课...
  13. ubuntu 移动硬盘复制小文件可以,复制大文件总是复制不成功
  14. KETTLE使用教程
  15. 服务器端网站自适应,[移动SEO]PC端和移动端最佳适配方案
  16. 台式电脑主板插线步骤图_台式电脑主板接线图解
  17. window定时自动关机脚本及问题解决【AT指令和SCHTASKS指令两种方式】
  18. 阿里云ACA课程之云上安全防护
  19. 年终总结--时光如水,生命如歌
  20. iOS开发-https免证书验证

热门文章

  1. 分析linux中动态库so文件的常用方法
  2. 用于活动检测的上下文多尺度区域卷积三维网络
  3. Beta版本冲刺计划及安排
  4. 企业软文推广如何掌握好新闻发布量
  5. 玩转移远SC60 Android开发板------(5)充电和电池管理
  6. 如何在CDR中制作半透明倒影
  7. 微信登陆的LOL只有一个服务器,《LOL》部分大区开启微信登陆功能 扫码即可进入游戏...
  8. LOL英雄联盟.html
  9. MC9S12XS128 PWM输出配置
  10. matlab 贝叶斯信息标准_如何用matlab的BNT软建立一个贝叶斯网络及条件概率表