Java ——集合框架 list lambda set map 遍历方法 数据结构
本节重点思维导图
有序无序:元素放入的顺序与取出的顺序是否一致,一致即为有序,不一致即无序。
- List:允许重复、有序
- ArrayList:长度可变的数组,遍历速度快
- LinkedList:链表:添加删除节点速度快
- import java.util.ArrayList;
- import java.util.Date;
- import java.util.List;
- public class Demo {
- public static void main(String[] args) {
- List list = new ArrayList();
- System.out.println("--------"+list.toString());//add
- list.add("aa");
- list.add(1234);
- list.add(true);
- list.add(new Date());
- list.add(1234);
- list.add(3.14);
- System.out.println(list.get(0) + " -- " + list.get(3));
- System.out.println(list.size());
- System.out.println(list);
- System.out.println(list.toString());
- for (Object obj : list) {
- System.out.println(obj);
- }
- list.remove(0);// 根据下标移除
- list.clear();
- System.out.println(list.size());
- }
- }
结果:
- --------[]
- aa -- Fri May 31 15:07:45 CST 2019
- 6
- [aa, 1234, true, Fri May 31 15:07:45 CST 2019, 1234, 3.14]
- [aa, 1234, true, Fri May 31 15:07:45 CST 2019, 1234, 3.14]
- aa
- 1234
- true
- Fri May 31 15:07:45 CST 2019
- 1234
- 3.14
- 0
泛型
- import java.util.ArrayList;
- import java.util.Date;
- import java.util.Iterator;
- import java.util.List;
- public class Demo {
- public static void main(String[] args) {
- List<String> list = new ArrayList<>();
- list.add("1234");
- list.add("true");
- list.add("aaaa");
- list.add("aaaa");
- list.add("bbbb");
- list.add("dddd");
- String e3 = list.get(3);
- System.out.println(e3);
- System.out.println(list.get(3));
- int size = list.size();
- System.out.println(size);
- for (String item : list) {
- System.out.println(item);
- }
- System.out.println("--------------------------");
- // Iterator迭代器
- Iterator<String> iterator = list.iterator();
- while (iterator.hasNext()) {// 判断是否还有下一个元素,有的话返回true
- String next = iterator.next();// 取出元素,同时将指针指向当前位置
- System.out.println(next);
- }
- }
- }
结果:
- aaaa
- aaaa
- 6
- 1234
- true
- aaaa
- aaaa
- bbbb
- dddd
- --------------------------
- 1234
- true
- aaaa
- aaaa
- bbbb
- dddd
list\Lambda\set\map
*lambda
- public static void main(String[] args) {
- List<String> list = new ArrayList<>();
- list.add("zhangsan");
- list.add("lisi");
- list.add("zhangsan");
- list.add("wanger");
- list.add("mazi");
- list.add("wanger");
- list.stream().forEach(element->System.out.println(element));
- System.out.println();
- list.forEach(item -> System.out.println(item));
- System.out.println();
- list.forEach(System.out::println);
- //将List中所有的元素变成大写字母后再逆序输出
- System.out.println();
- for(int i =list.size()-1;i>=0;i--) {
- String item = list.get(i);
- item = item.toUpperCase();
- System.out.println(item);
- }
- System.out.println();
- list.stream().map(item->item.toUpperCase())//映射:依次拿出List中的每一个元素进行映射
- .forEach(System.out::println);
- //输出List中每一个元素的前两个字符
- System.out.println();
- list.stream().map(item->item.substring(0, 2))
- .forEach(System.out::println);
- //只输出List中长度大于4的元素
- System.out.println();
- list.stream().filter(item->item.length()>4)
- .forEach(System.out::println);
- //去除重复
- System.out.println();
- list.stream().distinct().forEach(System.out::println);
- //将Stream转换成List
- System.out.println();
- List<String> collect = list.stream().collect(Collectors.toList());
- System.out.println(collect);
- }
*set
- public static void main(String[] args) {
- Set<String> set = new HashSet<>();
- set.add("zhangsan");
- set.add("lis");
- set.add("zhangsan");
- set.add("wanger");
- set.add("mazi");
- set.add("wanger");
- for(String item : set) {
- System.out.println(item);
- }
- System.out.println();
- Iterator<String> iterator = set.iterator();
- while(iterator.hasNext()) {
- System.out.println(iterator.next());
- }
- System.out.println();
- set.forEach(System.out::println);
- }
示例:学习set判断元素是否相等
- public class Dept {
- private int deptno;
- private String dname;
- private String loc;
- public Dept() {
- super();
- }
- public Dept(int deptno, String dname, String loc) {
- super();
- this.deptno = deptno;
- this.dname = dname;
- this.loc = loc;
- }
- public int getDeptno() {
- return deptno;
- }
- public void setDeptno(int deptno) {
- this.deptno = deptno;
- }
- public String getDname() {
- return dname;
- }
- public void setDname(String dname) {
- this.dname = dname;
- }
- public String getLoc() {
- return loc;
- }
- public void setLoc(String loc) {
- this.loc = loc;
- }
- @Override
- public int hashCode() {
- return 234;
- }
- @Override
- public boolean equals(Object obj) {
- return true;
- }
- @Override
- public String toString() {
- return "Dept [deptno=" + deptno + ", dname=" + dname + ", loc=" + loc + "]";
- }
- }
- public static void main(String[] args) {
- Set<Dept> set = new HashSet<>();
- set.add(new Dept());
- set.add(new Dept());
- set.add(new Dept(10,"sales","new york"));
- set.add(new Dept(20,"research","chicago"));
- System.out.println(set.size());
- set.forEach(System.out::println);
- }
*map
键值对
- public static void main(String[] args) {
- Map<String, Integer> data = new HashMap<>();
- data.put("a", 1);
- data.put("b", 2);
- data.put("c", 3);
- data.put("d", 4);
- System.out.println(data.get("a"));
- Set<String> keySet = data.keySet();
- keySet.forEach(System.out::println);
- Collection<Integer> values = data.values();
- values.forEach(item->System.out.print(item+" "));
- System.out.println();
- Set<Entry<String, Integer>> entrySet = data.entrySet();
- for(Entry<String, Integer> item: entrySet) {
- System.out.println(item.getKey()+" "+item.getValue());
- }
- data.forEach((k,v)->System.out.println(k+" : "+v));;
- }
遍历方法
快捷键:
代码格式化:ctrl+sfhit+f
自动提示:alt+?
抽取变量:alt+shift+L
复习总结
Arrays
- public static void main(String[] args) {
- String[] data = { "zhangsan", "lisi", "wanger", "mazi","qianwu","zhaoliu" };
- List<String> asList = Arrays.asList(data);
- System.out.println(asList);
- System.out.println(data);
- System.out.println(Arrays.toString(data));
- int binarySearch = Arrays.binarySearch(data, "lisi");
- System.out.println(binarySearch);
- //对数组进行扩容
- String[] copyOf = Arrays.copyOf(data, data.length + 4);
- for (String item : copyOf)
- System.out.println(item);
- String[] copyOfRange = Arrays.copyOfRange(data, 2, 4);
- System.out.println(Arrays.toString(copyOfRange));
- String[] copyOf2 = Arrays.copyOf(data, data.length);
- boolean equals = Arrays.equals(data,copyOf2);//比较两个数组的内容是否相等
- System.out.println(equals);
- boolean[] bol = new boolean[8];
- System.out.println(Arrays.toString(bol));
- Arrays.fill(bol,true);
- System.out.println(Arrays.toString(bol));
- Arrays.sort(data);
- System.out.println(Arrays.toString(data));
- System.out.println("--------------------");
- //匿名内部类
- Comparator<String> c = new Comparator<String>() {
- @Override
- public int compare(String o1, String o2) {
- return o2.length()-o1.length();
- }
- };
- Arrays.sort(data,c);
- System.out.println(Arrays.toString(data));
- data = new String[]{ "zhangsan", "lisi", "wanger", "mazi","qianwu","zhaoliu" };
- Arrays.sort(data,(o1,o2)->o2.length()-o1.length());
- System.out.println(Arrays.toString(data));
- }
collections
- public static void main(String[] args) {
- List<String> list = new ArrayList<>();
- Collections.addAll(list,"zhangsan", "lisi","zhangsan","wanger","zhangsan","mazi");
- System.out.println(list);
- int binarySearch = Collections.binarySearch(list, "lisi3");
- System.out.println(binarySearch);
- int binarySearch2 = Collections.binarySearch(list, "wanger", (o1,o2)->o1.length()-o2.length());
- System.out.println(binarySearch2);
- Collections.sort(list, new Comparator<String>() {
- @Override
- public int compare(String o1, String o2) {
- return o1.length()-o2.length();
- }
- });
- System.out.println(list);
- Collections.shuffle(list);
- System.out.println(list);
- Collections.sort(list, (o1,o2)->o1.length()-o2.length());;
- System.out.println(list);
- Collections.replaceAll(list, "zhangsan", "***");
- System.out.println(list);
- Collections.swap(list, 1, 3);
- System.out.println(list);
- Collections.reverse(list);
- System.out.println(list);
- }
list
- public static void main(String[] args) {
- List<String> list = new ArrayList<>();
- Collections.addAll(list,"zhangsan", "lisi","wanger","mazi");
- for(int i =0;i<list.size();i++){
- System.out.println(list.get(i));
- }
- for(String item : list){
- System.out.println(item);
- }
- Iterator<String> iterator = list.iterator();
- while(iterator.hasNext()){
- System.out.println(iterator.next());
- }
- ListIterator<String> listIterator = list.listIterator();
- while(listIterator.hasNext()){
- System.out.println(listIterator.next());
- }
- list.forEach(item->System.out.println(item));
- list.forEach(System.out::println);
- }
set
- public static void main(String[] args) {
- Set<String> set = new HashSet<>();
- set.add("aa");
- set.add("bb");
- set.add("cc");
- set.add("dd");
- for(String item : set){
- System.out.println(item);
- }
- Iterator<String> iterator = set.iterator();
- while(iterator.hasNext()){
- System.out.println(iterator.next());
- }
- set.forEach(item->System.out.println(item));
- set.forEach(System.out::println);
- }
map
原则:将map变为set
- public static void main(String[] args) {
- Map<Integer,Goods> map = new HashMap<>();
- map.put(111, new Goods(111,"aaa",1,"aaaaaaaaaaa"));
- map.put(222, new Goods(222,"bbb",2,"bbbbbbbbbbbbb"));
- map.put(333, new Goods(333,"ccc",3,"ccccccccccccc"));
- map.put(444, new Goods(444,"ddd",4,"dddddddddddd"));
- Set<Integer> keySet = map.keySet();
- for(Integer key : keySet){
- System.out.println(key+" : "+map.get(key));
- }
- Set<Entry<Integer, Goods>> entrySet = map.entrySet();
- for(Entry<Integer, Goods> item : entrySet){
- System.out.println(item.getKey()+" "+item.getValue());
- }
- map.forEach((k,v)->System.out.println(k+" :: "+v));;
- }
扩展:
- public static void main(String[] args) {
- List<String> list = Arrays.asList("zhangsan","lisi","wanger","mazi");
- Collections.sort(list, new Comparator<String>() {
- @Override
- public int compare(String o1, String o2) {
- return o1.length() - o2.length();
- }
- });
- System.out.println(list);
- System.out.println("-------------");
- list.forEach(item->System.out.println(item+" "+item.hashCode()));
- list.sort((o1,o2)->{
- return o1.hashCode()- o2.hashCode();
- });
- list.forEach(System.out::println);
- }
Java ——集合框架 list lambda set map 遍历方法 数据结构的更多相关文章
- 自顶向下理解Java集合框架(三)Map接口
Map基本概念 数据结构中Map是一种重要的形式.Map接口定义的是查询表,或称查找表,其用于储存所谓的键/值对(key-value pair),其中key是映射表的索引. JDK结构中还存在实现Ma ...
- JAVA集合框架(三)-Map
前言 Map是java中用于存储键值对映射的接口.是解决编程问题最常用的数据结构之一.在工作中,有时候为实现一个功能可能写了好大一段代码,运行是ok了,但是就是不想回头再看,不敢相信自己写的这么烂.这 ...
- Java集合框架(五)—— Map、HashMap、Hashtable、Properties、SortedMap、TreeMap、WeakHashMap、IdentityHashMap、EnumMap
Map Map用于保存具有映射关系的数据,因此Map集合里保存着两组值,一组值用于保存Map里的key,另一组值用于保存Map里的value,key和value都可以是任何引用类型的数据.Map的ke ...
- Java集合框架的总结
本篇文章先从整体介绍了Java集合框架包含的接口和类,然后总结了集合框架中的一些基本知识和关键点,并结合实例进行简单分析.当我们把一个对象放入集合中后,系统会把所有集合元素都当成Object类的实例进 ...
- Java集合框架的知识总结(1)
说明:先从整体介绍了Java集合框架包含的接口和类,然后总结了集合框架中的一些基本知识和关键点,并结合实例进行简单分析. 1.综述 所有集合类都位于java.util包下.集合中只能保存对象(保存对象 ...
- Java集合框架的知识总结
说明:面试准备,写的挺不错的. 转载地址: http://www.cnblogs.com/zhxxcq/archive/2012/03/11/2389611.html 1.综述 所有集合类都位于jav ...
- [转]Java - 集合框架完全解析
数据结构是以某种形式将数据组织在一起的集合,它不仅存储数据,还支持访问和处理数据的操作.Java提供了几个能有效地组织和操作数据的数据结构,这些数据结构通常称为Java集合框架.在平常的学习开发中,灵 ...
- Java集合框架总结—超详细-适合面试
Java集合框架总结—超详细-适合面试 一.精简: A.概念汇总 1.Java的集合类主要由两个接口派生而出:Collection和Map,Collection和Map是Java集合框架的根接口, ...
- S2:java集合框架
Java集合就是一个容器.面向对象语言对事物的体现都是以对象的形式存在,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式.集合只用于存储对象,集合长度是可变的,集合可以 ...
随机推荐
- 在VMware Vcenter添加一块网卡后,启动虚机找不到网卡,发现有一个ens38(redhat7.5)
添加一块网卡后,启动虚机找不到网卡,发现有一个ens38 问题:新建虚拟机设置为一块网卡,时候在Vcenter再添加一块网卡,这个问题相信很多网友都见过,今天就来总结一下添加过程中的问题. 由于有以前 ...
- PIL 中的 Image 模块
转载:http://www.cnblogs.com/way_testlife/archive/2011/04/20/2022997.html PIL 中的 Image 模块 本文是节选自 PIL ...
- RSA前端加密
昨天做了登陆模块,接触了md5&RSA加密.有点意思,talk is cheap,show me the code! 前端加密 为什么要加密 前端加密的方式 后台如何解密 1 为什么要加密? ...
- Spring:jar包详解
org.springframework.aop ——Spring的面向切面编程,提供AOP(面向切面编程)的实现 org.springframework.asm——spring 2.5.6的时候需要a ...
- ZROI 19.08.10模拟赛
传送门 写在前面:为了保护正睿题目版权,这里不放题面,只写题解. A \(20pts:\) 枚举操作序列然后暴力跑,复杂度\(O(6^n)\). \([50,80]pts:\) 枚举改成dfs,每层操 ...
- python 后台 安装 富文本编辑
前言 当然需要安装一些后台只能输入一些文本编辑器,不然这样多少不美观呀 当然python 有 safe 可以把后台的标签转换 , 还有 striptags 这个是换成html 格式的,但不会加粗或 ...
- mysql的视图、索引、触发器、存储过程
USE school; SELECT * FROM sc; SELECT * FROM course; SELECT * FROM student; SELECT * FROM teacher; -- ...
- 故障检测、性能调优与Java类加载机制
故障检测.性能调优与Java类加载机制 故障检测.性能调优 用什么工具可以查出内存泄露 (1)MerroyAnalyzer:一个功能丰富的java堆转储文件分析工具,可以帮助你发现内存漏洞和减少内存消 ...
- SpringBoot的项目构建
手动构建SpringBoot项目 一.手动构建一个Maven,选择...webapp或者选择快速骨架生成,然后命名并生成项目: 二. 在pom.xml中,进行三处配置: 设置父模块,子模块就可以继承 ...
- 为什么C++中只有指针和引用才能实现多态?
代码: class A { public: virtual void Debug(){} }; class B:public A { public: virtual void Debug(){} }; ...