Java(day15)List、set、Map
list:
Arraylist
底层结构是数组,内存空间是连续的,可以根据下标进行操作,且下标有序,可重复;
增删操作比较慢,查询操作较快
底层会自动创建数组存放对象,并且数组的初始容量为10,扩容以1.5倍扩容
ArrayList<Integer> list=new ArrayList<>();
主体代码:
package cn.tedu.collection;import java.util.ArrayList;//本类用于ArrayList的测试
public class TestArrayList {public static void main(String[] args) {ArrayList<Integer> list=new ArrayList<>();list.add(100);list.add(200);list.add(300);list.add(400);list.add(400);list.add(300);System.out.println(list);}
}
删除元素:
以下代码会报错,list有两个remove方法,需要进行手动装箱,将int转化为integer
System.out.println(list.remove(300));
正确删除代码 :1.删除指定元素
2.用指定下标删除
System.out.println(list.remove(Integer.valueOf(300)));
System.out.println(list);
运行结果:
[100, 200, 400, 400, 300]
list.remove(3)
System.out.println(list);
运行结果:
[100, 200, 400, 300]
LinkedList![](/assets/blank.gif)
元素有下标,有序,可重复
底层的数据结构是列表,内存空间不连续
进行首尾节点的操作比较多
增删操作比较快,查找操作比较慢
主体元素:
package cn.tedu.collection;import java.util.LinkedList;public class TestLinkList {public static void main(String[] args) {LinkedList<String> list=new LinkedList<>();list.add("孙悟空");list.add("猪八戒");list.add("唐三藏");list.add("沙师弟");list.add("白龙马");System.out.println(list);}
}
运行结果:
添加首尾元素
list.addFirst("蜘蛛精");
list.addLast("玉兔");
System.out.println(list);
System.out.println(list.offer("海绵"));
System.out.println(list.offerFirst("派大星"));
System.out.println(list.offerLast("蟹老板"));
System.out.println(list);
获取首尾元素
System.out.println(list.getFirst());
System.out.println(list.element());
System.out.println(list.peek());
System.out.println(list.peekFirst());
删除首尾元素
list.removeFirst();
System.out.println(list);
list.removeLast();
System.out.println(list);
set:
set集合中的元素都是没有顺序的
set集合中的元素不能重复
set集合可以存null值,并且null最多有一个
package cn.tedu.collection;import java.util.HashSet;
import java.util.Set;//本类用于测试set
public class TestSet {public static void main(String[] args) {Set<String> set=new HashSet<>();set.add("紫霞仙子");set.add("至尊宝");set.add("蜘蛛精");set.add("紫霞仙子");System.out.println(set);}
}
运行结果:
[蜘蛛精, 至尊宝, 紫霞仙子]
判断是否为空
System.out.println(set.isEmpty());
判断是否包含该元素
System.out.println(set.contains("唐僧"));
转化为数组
System.out.println(Arrays.toString(set.toArray()));
set的去重
package cn.tedu.collection;import java.util.Objects;//测试set集合中存放自定义的引用类型
public class Student {String name;int id;public Student(String name, int id) {this.name = name;this.id = id;}@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", id=" + id +'}';}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Student student = (Student) o;return id == student.id &&Objects.equals(name, student.name);}@Overridepublic int hashCode() {return Objects.hash(name, id);}
}
package cn.tedu.collection;import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;//测试set存放自定义的引用类型对象的去重问题
public class TestSet2 {public static void main(String[] args) {//创建set集合对象Set<Student> set=new HashSet();//创建student类的对象Student s1=new Student("张三",3);Student s2=new Student("李四",4);Student s3=new Student("王五",5);Student s4=new Student("王五",5);set.add(s1);set.add(s2);set.add(s3);set.add(s4);//添加重写的equals()与hashcode()可以实现去重的效果System.out.println(set);}
}
运行结果:
[Student{name='张三', id=3}, Student{name='李四', id=4}, Student{name='王五', id=5}]
Map
特点:
map<k,v>中的k不允许重复,如果重复,后有的k会把前面的k的value覆盖
map<k,v>中的v可以重复
map中的映射关系是无序的
创建方式
Map<Integer,String> map=new HashMap<>();
元素的添加
map.put(9527,"白骨精");
map.put(9528,"黑熊精");
map.put(9529,"鲤鱼精");
map.put(9530,"黄毛怪");
System.out.println(map);
运行结果:
{9527=白骨精, 9528=黑熊精, 9529=鲤鱼精, 9530=黄毛怪}
清空集合
map.clear();
System.out.println(map);
运行结果:
{}
判断集合是否为空
System.out.println(map.isEmpty());
判断键值对的数量
System.out.println(map.size());
运行结果:
4
判断集合是否包含指定的值
System.out.println(map.containsKey(9527));
System.out.println(map.containsValue("白骨精"));
运行结果:
true
true
删除指定的值
map.remove(9527);
System.out.println(map);
运行结果:
{9528=黑熊精, 9529=鲤鱼精, 9530=黄毛怪}
将map中所有的value取出,存入collection集合
Collection<String> values = map.values();
System.out.println(values);
运行结果:
[黑熊精, 鲤鱼精, 黄毛怪]
map的迭代方式:
方式一:map本身没有迭代器,所以需要用keySet()将map中的所有key值存入set集合中set<key>,转化为set集合
Set<Integer> set = map.keySet();
Iterator<Integer> it = set.iterator();
while (it.hasNext()){Integer key = it.next();String value = map.get(key);System.out.println("{"+key+","+value+"}");
}
运行结果:
{9528,黑熊精}
{9529,鲤鱼精}
{9530,黄毛怪}
方式二:把map中的一对键值对key&value作为一个Entry<k,v>整体放入set
Set<Map.Entry<Integer, String>> set2 = map.entrySet();
Iterator<Map.Entry<Integer, String>> it2 = set2.iterator();
while(it2.hasNext()){Map.Entry<Integer, String> entry = it2.next();System.out.println(entry);}
运行结果:
9528=黑熊精
9529=鲤鱼精
9530=黄毛怪
Java(day15)List、set、Map相关推荐
- Java(8)—— 类与对象、成员方法
目录 类与对象(OOP) 属性/成员变量 如何创建对象/访问属性 类和对象的内存分配机制 成员方法 1.简单介绍 2.方法的调用机制 3.成员方法的定义 4.方法使用细则 5.方法调用细则 成员方法的 ...
- java(Springboot) excel模板下载、导入
一.java对excel模板的下载 首先在resources目录下 代码可以直接复制,标红的是你的excel表名.然后在浏览器输入连接http://xxxx:8610/cloud/basic/user ...
- [Java并发编程(二)] 线程池 FixedThreadPool、CachedThreadPool、ForkJoinPool?为后台任务选择合适的 Java executors...
[Java并发编程(二)] 线程池 FixedThreadPool.CachedThreadPool.ForkJoinPool?为后台任务选择合适的 Java executors ... 摘要 Jav ...
- 从零学Java(12)之算术运算符(++、- -)
作者简介 作者名:编程界明世隐 简介:CSDN博客专家,从事软件开发多年,精通Java.JavaScript,博主也是从零开始一步步把学习成长.深知学习和积累的重要性,喜欢跟广大ADC一起打野升级,欢 ...
- 从零学Java(11)之算术运算符(加减乘除余、字符连接)
作者简介 作者名:编程界明世隐 简介:CSDN博客专家,从事软件开发多年,精通Java.JavaScript,博主也是从零开始一步步把学习成长.深知学习和积累的重要性,喜欢跟广大ADC一起打野升级,欢 ...
- Java(二)分支循环、数组、字符串、方法
文章目录 一.分支循环 1.1 分支结构 1.2 循环结构 1.3 跳转语句 1.4 分支循环相关问题 1.4.1 switch是否能作用在byte上,是否能作用在long上,是否能作用在String ...
- 【Java】流程控制 - 顺序结构、 选择(分支)结构(单分支、双分支、多分支、嵌套)、循环结构(for、while、do...while)、跳转语句(break、continue)
流程控制语句结构 文章目录 流程控制语句结构 一. 顺序结构 1. 输出语句 2. 输入语句 3.code 二.复合语句 三. 分支结构 1. 条件判断 1.单分支结构 2.双分支结构 3.多分支结构 ...
- JAVA - 使用Apache POI生成word(二) 设置纸张大小、调整纸张方向
JAVA - 使用Apache POI生成word(二) 设置纸张大小.调整纸张方向 前言 之前开发时,需要将纸张方向由纵向改为横向,查询资料得出只需要设置一下纸张的长度与宽度便可实现相同的效果. 1 ...
- 数据结构与算法Java(二)——字符串、矩阵压缩、递归、动态规划
不定期补充.修正.更新:欢迎大家讨论和指正 本文以数据结构(C语言版)第三版 李云清 杨庆红编著为主要参考资料,用Java来实现 数据结构与算法Java(一)--线性表 数据结构与算法Java(二)- ...
最新文章
- cad里面f命令用不了,CAD出现命令无效、失灵等问题?不用慌,两招帮你快速解决...
- debug:g2o cmake时报错“Qt5 not found. Install it and set Qt5_DIR accordingly
- 继AutoML后,第四范式发布软硬一体化AI集成系统SageOne
- 二层交换机、三层交换机和路由器的基本工作原理和三者之间的主要区别
- 模拟聊天室显示语句保持最新显示
- 六、Numpy的使用(详解)
- 从入门到放弃之大数据Hive
- 边缘AI方案落地问题探讨
- 手机mstsc远程工具_ToDesk — 免费不限速的远程控制软件
- FatFs - Generic FAT Filesystem Module
- 金融文本信息情感分析(负面及主体判定)
- Vim配置Java IDE
- 阿里总裁马云对于第5个经济体技术有着独特的见解
- 软件数字签名证书选购指南
- 0045-一个Dashbord页面监控多个消费者
- 《孤独的青春创造不孤独的人生》
- 西门子PLC学习笔记十-(计数器)
- 程序员薪酬到底有多高?来看硅谷的工程师统计
- python条件选择语句,Python中条件选择语句可以嵌套使用。
- MATLAB三点确定圆
热门文章
- ant design inputNumber 组件带有人民币符号
- 2022年全球市场自行车共享服务总体规模、主要企业、主要地区、产品和应用细分研究报告
- 项目总延期?需求乱插队?程序员如何做好项目管理
- 全球卫星定位系统gps及其在现代交通运输中的应用
- windows电脑常识
- 淘宝店铺转让定金可以退吗
- layuiadmin上手好难_【王者荣耀】凯皇教程,冰心不死流,新手也能快速上手!...
- Java半学年要点总结
- 全球首款采用华为鸿蒙系统的,首款鸿蒙系统终端新闻 华为正式发布鸿蒙系统...
- 浏览器内核和js引擎