java基础--List
List基本属性和方法移步官方文档:
1.处理最简单的List<String>:
(1)并集、交集、差集
并集:
如果只用List.addAll(Collection<? extends String> c)方法,获得的结果是两个List的元素值和,即会出现相同的元素,如以下代码:
1 public void test(){
2 List<String> list1 = new ArrayList<>();
3 list1.add("北京");
4 list1.add("上海");
5 list1.add("广东");
6 List<String> list2 = new ArrayList<>();
7 list2.add("北京");
8 list2.add("上海");
9 list2.add("山东");
10 list1.addAll(list2);
11 System.out.println("list1.addAll(list2):"+list1);
12 }
13
14 获得的结果为:list1.addAll(list2):[北京, 上海, 广东, 北京, 上海, 山东]
差集:
如果想获得没有重复的集合,需要先了解一下List.removeAll(Collection<?> c),即求差集,如下代码:
1 public void test(){
2 List<String> list1 = new ArrayList<>();
3 list1.add("北京");
4 list1.add("上海");
5 list1.add("广东");
6 List<String> list2 = new ArrayList<>();
7 list2.add("北京");
8 list2.add("上海");
9 list2.add("山东");
10 list1.removeAll(list2);
11 System.out.println("list1.removeAll(list2):"+list1);
12 }
13
14 获得的结果为:list1.removeAll(list2):[广东]
无重复并集:
此时若求无重复并集,可以先做差集,再进行并集,如下代码:
1 public void test(){
2 List<String> list1 = new ArrayList<>();
3 list1.add("北京");
4 list1.add("上海");
5 list1.add("广东");
6 List<String> list2 = new ArrayList<>();
7 list2.add("北京");
8 list2.add("上海");
9 list2.add("山东");
10 list1.removeAll(list2);
11 list1.addAll(list2);
12 System.out.println("list1.removeAll+addAll(list2):"+list1);
13 }
14
15 获得的结果为:list1.removeAll+addAll(list2):[广东, 北京, 上海, 山东]
交集:
交集使用retailAll()即可,如以下代码:
1 public void test(){
2 List<String> list1 = new ArrayList<>();
3 list1.add("北京");
4 list1.add("上海");
5 list1.add("广东");
6 List<String> list2 = new ArrayList<>();
7 list2.add("北京");
8 list2.add("上海");
9 list2.add("山东");
10 list1.retainAll(list2);
11 System.out.println("list1.retainAll(list2):"+list1);
12 }
13
14 获得的结果为:list1.retainAll(list2):[北京, 上海]
(3)有些时候,可能需要将某list查分成指定大小的list,所以简单的实现了一下:
1 public static <T> List<List<T>> splitList(List<T> target, int size) {
2 List<List<T>> listArr = new ArrayList<List<T>>();
3 //获取被拆分的数组个数
4 int arrSize = target.size() % size == 0 ? target.size() / size : target.size() / size + 1;
5 for (int i = 0; i < arrSize; i++) {
6 List<T> sub = new ArrayList<T>();
7 //把指定索引数据放入到list中
8 for (int j = i * size; j <= size * (i + 1) - 1; j++) {
9 if (j <= target.size() - 1) {
10 sub.add(target.get(j));
11 }
12 }
13 listArr.add(sub);
14 }
15 return listArr;
16 }
17
18 @Test
19 public void test(){
20 List<String> list1 = new ArrayList<>();
21 list1.add("北京1");
22 list1.add("北京2");
23 list1.add("北京3");
24 list1.add("北京4");
25 list1.add("北京5");
26 list1.add("北京6");
27 list1.add("北京7");
28 list1.add("北京8");
29 list1.add("北京9");
30 list1.add("北京10");
31 list1.add("北京11");
32
33 System.out.println("list1:"+list1);
34 System.out.println("result:"+splitList(list1,2));
35 }
36
37 结果:
38 list1:[北京1, 北京2, 北京3, 北京4, 北京5, 北京6, 北京7, 北京8, 北京9, 北京10, 北京11]
39 result:[[北京1, 北京2], [北京3, 北京4], [北京5, 北京6], [北京7, 北京8], [北京9, 北京10], [北京11]]
(4)其他常用的简单方法:
1 //List<Object>转List<String>
2 List<Object> objectList = new ArrayList<Object>();
3 List<String> stringList = (List<String>)(List)objectList;
4 //将List<String>转成按某字符拼接成字符串
5 String stringList2String = String.join(",", stringList);
6 //将字符串按照某字符拆分成List<String>
7 List<String> string2StringList = Arrays.asList(stringList2String.split(","));
8
9 //String[]转List<String>
10 List<String> stringList1 = Arrays.asList(new String[]{"str1","str2"});
11 //此时,stringList1不能使用add方法,会报错Exception in thread "main" java.lang.UnsupportedOperationException,要进行以下处理
12 List<String> stringList2 = new ArrayList<>(Arrays.asList(new String[]{"str1","str2"}));
java基础--List的更多相关文章
- Java基础知识(壹)
写在前面的话 这篇博客,是很早之前自己的学习Java基础知识的,所记录的内容,仅仅是当时学习的一个总结随笔.现在分享出来,希望能帮助大家,如有不足的,希望大家支出. 后续会继续分享基础知识手记.希望能 ...
- [Java面经]干货整理, Java面试题(覆盖Java基础,Java高级,JavaEE,数据库,设计模式等)
如若转载请注明出处: http://www.cnblogs.com/wang-meng/p/5898837.html 谢谢.上一篇发了一个找工作的面经, 找工作不宜, 希望这一篇的内容能够帮助到大 ...
- 【JAVA面试题系列一】面试题总汇--JAVA基础部分
JAVA基础 基础部分的顺序: 基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法 线程的语法,集合的语法,io 的语法,虚拟机方面的语法 每天几道,持续更新!! 1.一个". ...
- 最适合作为Java基础面试题之Singleton模式
看似只是最简单的一种设计模式,可细细挖掘,static.synchronized.volatile关键字.内部类.对象克隆.序列化.枚举类型.反射和类加载机制等基础却又不易理解透彻的Java知识纷纷呼 ...
- java基础练习 字符串,控制流,日历,日期等
1,对基本控制流程的一些练习 package org.base.practice3; import org.junit.Test; /** * Created with IntelliJ IDEA. ...
- Java基础知识【下】( 转载)
http://blog.csdn.net/silentbalanceyh/article/details/4608360 (最终还是决定重新写一份Java基础相关的内容,原来因为在写这一个章节的时候没 ...
- Java基础知识【上】(转载)
http://blog.csdn.net/silentbalanceyh/article/details/4608272 (最终还是决定重新写一份Java基础相关的内容,原来因为在写这一个章节的时候没 ...
- java基础学习03(java基础程序设计)
java基础程序设计 一.完成的目标 1. 掌握java中的数据类型划分 2. 8种基本数据类型的使用及数据类型转换 3. 位运算.运算符.表达式 4. 判断.循环语句的使用 5. break和con ...
- Java基础加强之多线程篇(线程创建与终止、互斥、通信、本地变量)
线程创建与终止 线程创建 Thread类与Runnable接口的关系 public interface Runnable { public abstract void run(); } public ...
- java基础知识小总结【转】
java基础知识小总结 在一个独立的原始程序里,只能有一个 public 类,却可以有许多 non-public 类.此外,若是在一个 Java 程序中没有一个类是 public,那么该 Java 程 ...
随机推荐
- zk基础—1.一致性原理和算法
大纲 1.分布式系统特点 2.分布式系统的理论 3.两阶段提交Two-Phase Commit(2PC) 4.三阶段提交Three-Phase Commit(3PC) 5.Paxos岛的故事来对应Zo ...
- Navicat Premium 16激活教程(NavicatCracker)
1.安装Navicat Premium 16 (注意版本,这里以此版本为例):并下载激活工具 1.1.Navicat Premium 下载路径: http://www.navicat.com.cn/d ...
- 一、C语言概述
声明 本文内容大多取自<高级语言程序设计一书>,为本人学习笔记记录,切勿用于商业用途. 第一节 计算机发展 电子计算机已经历的四个发展时代: 第一代:20 世纪 50 年代,主要采用真空电 ...
- df -h命令卡住 怎么办
df -h命令卡住 命令行输入df -h却发现一直卡在那里,有可能是挂载出了问题. 这种问题,大概率是由于 mount 的目录被删除了,但是没有提前执行 umount 操作,因此报错! 解决方法: 1 ...
- Java三大特性 封装、继承、多态
封装 概念: 封装指的是将类的某些信息隐藏在类内部,不允许外部程序直接访问,只能通过该类提供的方法来实现对隐藏信息的操作和访问. 封装实现的步骤: 1.修改属性的可见性来显示属性的访问,一般设为pri ...
- Spring Boot Jpa封装快速构建Specification、OrderBy、Pageable的查询条件
1.简介 在我们使用JPA时,构建 Specification 查询条件时重复代码过多,而且需要大量的无效代码. 2.工具类提供的方法 2.1.自动构建规范 /** * 自动构建规范 * * @p ...
- 【BUG】未能加载文件或程序集“System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyT
参考:无法加载文件或程序集System.Runtime.CompilerServices.Unsafe. 问题 我的环境: Visual Studio 2019 出错代码: MSBuildWorksp ...
- 结点的"最早开始和最晚开始和最早完成和最晚完成"
最早:方块表示 最晚:三角形表示 最早开始:2 最晚开始:15-5=10 最早完成:2+5=7 最晚完成:15 案例1 案例2
- vue3 基础-动态组件 & 异步组件
之前学习的都是父子组件传值的话题, 一句话总结就是, 常规数据通过属性传, dom 结构通过插槽 slot 来传. 而本篇则关注如何通过数据去控制组件的显示问题, 如咱经常用到的页面切换呀, Tab ...
- docker容器安装TensorFlow_gpu 版本遇到的坑。。。
运行并挂载docker镜像 docker run -it -v E:/workspace/docker:/dl -p 8888:8888 8d78dd1e1b64 /bin/bash 安装jupyte ...