IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> MapList的用法与区别,很基础,蛋或许你不通透 -> 正文阅读

[Java知识库]MapList的用法与区别,很基础,蛋或许你不通透

目录

区别:

关系:

Set接口:

List接口:

Map接口:

总结:

用法:

(一):List

(二):? Map

(下一篇)?16 条 yyds 的代码规范

40 个 SpringBoot 常用注解


区别:

  • List:是存储单列数据的集合,存储的数据是有序并且是可以重复的?
  • Map:存储双列数据的集合,通过键值对存储数据,存储 的数据是无序的,Key值不能重复,value值可以重复?key和value是一一对应的

关系:

Collection是Java中最基本的集合接口。

Set接口:

Set接口直接继承自Collection接口,并且方法接口上也一模一样。Set对添加的元素有一些要求,其不允许出现重复的元素,并且元素之间没有次序。这相当于一个不允许重复的离散的集合。因此,添加进Set的元素类型需要定义equals方法。若是使用自定义的类,则应该重写equals方法来确保实现自己需要的功能。

  • Set接口主要实现了两个类:HashSet,TreeSet。

HashSet是按照哈希来存取元素的,因此速度较快。HashSet继承自抽象类AbstractSet,然后实现了Set、Cloneable、Serializable接口。?
TreeSet也是继承自AbstractSet,不过不同的是其实现的是NavigableSet接口。而NavigableSet继承自SortedSet。SortedSet是一个有序的集合。其添加的元素必须实现了Comparable接口,因为其在添加一个元素的时候需要进行排序。NavigableSet则提供了更多的有关元素次序的方法。


?
LinkedHashSet也是Set的一个实现。和HashSet类似,只不过内部用链表来维护,按照元素插入次序来保存。

List接口:


List接口也是继承自Collection。与Set不同的是,List可以存储重复的元素。主要有两种实现:ArrayList和LinkedList。?
ArrayList没有什么好说的,就像传统的数组一样,有着很快的随机存取速度,但是插入删除的速度就很慢。?
LinkedList则与ArrayList恰恰相反,因为用链表来保存数据,所以插入删除元素的速度很快,但是访问数据的速度就不如ArrayList了。

Map接口:


Map(映射)是一个存储键值对的容器接口。每一个元素包含一个key对象和value对象,且元素不允许重复。?
Map接口的实现有以下几个:?
HashMap是最常用的一个实现。HashMap使用hash映射来存取数据,这个速度是相当快,是O(1)的速度。其容量capacity,和负载因子load factor可以在一开始设定。当元素个数达到capacity*load factor的时候,就会进行扩容。?
LinkedHashMap和HashMap类似,只不过内部用链表来维护次序。因此遍历时候的顺序是其插入顺序。?
TreeMap是基于红黑树的Map,插入的数据被有次序保存,并且有很高的效率。因此在遍历输出的时候可以得到排序的数据。但是这要求插入的数据实现了comparable接口。

总结:


Collection、Set、List和Map都是接口,不能被实例化。
Set和List都继承自Collection,而Map则和Collection没什么关系。
Set和List的区别在于Set不能重复,而List可以重复。
Map和Set与List的区别在于,Map是存取键值对,而另外两个则是保存一个元素。
?

用法:

(一):List

1:声明一个List

// Object:指List里的值是什么类型的,Object代表可以是任何形式的
List<Object> list = new ArrayList<Object>();

2:方法

?(1):add() ? 添加数据?? ? ?

list.add("北京");
list.add("深圳");
list.add("上海");

(2):get(index)

list.get(0) // 结果:北京

?(3):size() ?list里的数据个数

list.size()

?(4):遍历list

for(int i=0;i<list.size();i++){
    System.out.println(list.get(i));
}

list取值是通过下标,下标从0开始

(二):? Map

1:声明一个Map

// 说明:Map是通过key-value(值键对) ,String代表key的类型(一般都是String),Object代表value的类型
Map<String,Object> map = new HashMap<String,Object>();

2:put(key,value) ?赋值

map.put("name", "小明");
map.put("sex", "男");
map.put("age", 18);

3:get(key) ?取值?? ? ?

// 结果:小明
map.get("name") 


?(三):List<Map>

1:声明一个List<Map>

List<Map<String,Object>> listMap = new ArrayList<Map<String,Object>>();

2:赋值

(1):先赋值给Map

Map<String,Object> map1 = new HashMap<String,Object>();

map1.put("name", "小明");

map1.put("sex", "男");

map1.put("age", 18);

Map<String,Object> map2 = new HashMap<String,Object>();

map2.put("name", "小红");

map2.put("sex", "女");

map2.put("age", 16);

(2):将map添加到List中

listMap.add(map1);

listMap.add(map2);

// 结果:[{sex=男, name=小明, age=18}, {sex=女, name=小红, age=16}]

(3):遍历存值

  List<Map<String,Object>> listMap = new ArrayList<Map<String,Object>>();
            List<LandBaseInfo> list = landBaseInfoDao.getAllProList();
            for(int i = 0;i<list.size();i++){
                // 关键点,map命名写在循环里
                Map<String,Object> map = new HashMap<String,Object>();
                String areaName = list.get(i).getAreaName();
                if(areaName == "市本级"){
                    areaName = list.get(i).getDistrict();
                }
                String landPostition = list.get(i).getLandPosition();
                String adddress = "河南省"+areaName+landPostition ;
                String landId = list.get(i).getLandId();
                String landCode = list.get(i).getLandCode();
                String type = "2";
                map.put("address",adddress);
                map.put("landId",landId);
                map.put("landCode",landCode);
                map.put("type",type);
                listMap.add(map);
 }        

(4):遍历取值

for(int i = 0;i<listMap.size();i++){

System.out.print(listMap.get(i).get("name"));

System.out.print(listMap.get(i).get("sex"));

System.out.print(listMap.get(i).get("age"));

System.out.println();

}

来源:万里哥

https://www.cnblogs.com/wanlige/p/13048366.html?

?五年从程序员到架构师!这是我见过史上最好的程序员职业规划

(下一篇)?16 条 yyds 的代码规范

40 个 SpringBoot 常用注解

别慌,在Java面试的时候,面试官会这样问关于框架的问题?

想要实时关注更多干货好文,扫描下图关注或微信搜索【万言尽书上】关注公众公众号:

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-08-12 16:28:00  更:2021-08-12 16:28:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/18 9:17:28-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码