搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
煮酒与君饮
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
Kafka中topic(主题)、broker(代理)、partition(分区)和replication(副本)它们的关系_kafka topic partition broker
2
【百度PARL】强化学习笔记_百度强化学习框架
3
TypeScript学习 + 贪吃蛇项目_typescript语法
4
985硕士毕业进京东,抱怨身边全是二本和大专生!没什么本事却整天高高在上!打交道太累了!...
5
笔记:使用k-近邻算法构建手写识别系统_笔记识别算法
6
遗传算法与深度学习实战(2)——生命模拟及其应用_康威生命游戏
7
浙江省信息通信行业职业技能竞赛CTF比赛MISC:IDM GPS CAT_浙江省信息通信行业职业技能竞赛ctf比赛misc部分
8
虚拟机centOS 7 配置静态IP(附视频)_centos设置静态ip
9
springboot集成rabbitMq遇到的坑_cannot force queue declarations during start
10
QPSK/DQPSK 调制解调系统仿真_qpsk仿真报告
当前位置:
article
> 正文
List,Set,Map用法以及区别(详解)_list、set 、map用法
作者:煮酒与君饮 | 2024-08-21 18:25:25
赞
踩
list、set 、map用法
List,Set,Map是否继承自Collection接口?
答:List,Set是,Map不是。
如图:
Collection
├List
│├LinkedList
│├ArrayList
│└Vector
│ └Stack
└Set
Map
├Hashtable
├HashMap
└WeakHashMap
Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素。一些Collection允许相同的元素而另一些不行。一些能排序而另一些不行。Java JDK不能提供直接继承自Collection的类,Java JDK提供的类都是继承自Collection的"子接口",如:List和Set。
注意:Map没有继承Collection接口,Map提供key到value的映射。一个Map中不能包含相同key,每个key只能映射一个value。Map接口提供3种集合的视图,Map的内容可以被当做一组key集合,一组value集合,或者一组key-value映射。
详细介绍:
List特点:元素有放入顺序,元素可重复
Map特点:元素按键值对存储,无放入顺序
Set特点:元素无放入顺序,元素不可重复(注意:元素虽然无放入顺序,但是元素在set中的位置是有该元素的HashCode决定的,其位置其实是固定的)
List接口有三个实现类:LinkedList,ArrayList,Vector
LinkedList:底层基于链表实现,链表内存是散乱的,每一个元素存储本身内存地址的同时还存储下一个元素的地址。链表增删快,查找慢
ArrayList和Vector的区别:ArrayList是非线程安全的,效率高;Vector是基于线程安全的,效率低
Set接口有两个实现类:HashSet(底层由HashMap实现),LinkedHashSet
SortedSet接口有一个实现类:TreeSet(底层由平衡二叉树实现)
Query接口有一个实现类:LinkList
Map接口有三个实现类:HashMap,HashTable,LinkeHashMap
HashMap非线程安全,高效,支持null;HashTable线程安全,低效,不支持null
SortedMap有一个实现类:TreeMap
其实最主要的是,list是用来处理序列的,而set是用来处理集的。Map是知道的,存储的是键值对
set 一般无序不重复.map kv 结构 list 有序
就个人而言.list 用的比较多. 其次map 最后set 至于什么情况下使用什么集合.看情况了. 也不好说.也没那么绝对.
看了下面的这个就更容易明白了
写一段代码,遍历一个List中的元素
List、Map、Set三个接口,存取元素时,各有什么特点?
Java代码
import
java.util.*;
public
class
Test
{
public
static
void
main(String [] arge)
{
List list =
new
ArrayList();
list.add(
0
,
"a"
);
list.add(
1
,
"b"
);
list.add(
2
,
"c"
);
list.add(
3
,
"d"
);
while
(Iterator it = list.iterator();it.hasNext())
{
Object element = it.next();
System.out.println (element);
}
}
}
List、Map、Set
List 通过下标来存取 和值来存取
Map 键值对应来存取
set 存取元素是无序的
--------------------------------------------------------------------
package
com.operation;
import
java.util.ArrayList;
import
java.util.HashSet;
import
java.util.Iterator;
import
java.util.List;
import
java.util.Set;
import
java.util.TreeSet;
public
class
User {
private
Integer userId;
private
String userName;
private
String address;
public
User(
int
userId, String userName, String address) {
this
.userId = userId;
this
.userName = userName;
this
.address = address;
}
public
String getAddress() {
return
address;
}
public
void
setAddress(String address) {
this
.address = address;
}
public
Integer getUserId() {
return
userId;
}
public
void
setUserId(Integer userId) {
this
.userId = userId;
}
public
String getUserName() {
return
userName;
}
public
void
setUserName(String userName) {
this
.userName = userName;
}
public
static
void
main(String[] args) {
// Map<Integer, User> map = new TreeMap<Integer, User>();
// map.put(1, new User(1,"李伟","beijing"));
// map.put(2, new User(2,"王文军","beijing"));
//
// map.put(4, new User(2,"abc","beijing"));
// map.put(5, new User(2,"abc","beijing"));
//
//
//
// Set<Integer> keys = map.keySet();
//
Iterator<Integer> it = keys.iterator();
while (it.hasNext()) {
Integer key = it.next();
User user = map.get(key);
System.out.println("key = " + key + "\t" + "value = " + user.getUserName());
}
//
// for (Integer key : keys) {
// User user1 = map.get(key);
// System.out.println("key = " + key + "\t" + "value = " + user1.getUserName());
// }
Set<String> set =
new
HashSet<String>();
set.add(
"a"
);
set.add(
"b"
);
set.add(
"c"
);
set.add(
"d"
);
set.add(
"d"
);
set.add(
"d"
);
set.add(
"d"
);
set.add(
"uuu"
);
set.add(
"e"
);
Iterator<String> it = set.iterator();
while
(it.hasNext()) {
System.out.println(it.next());
}
}
}
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/煮酒与君饮/article/detail/1012869
推荐阅读
article
[
数据结构
]——
链表
(
list
)、
队列
(
queue
)
和
栈(
stack
)...
在前面几篇博文中曾经提到
链表
(
list
)、
队列
(
queue
)
和
(
stack
),为了更加系统化,这里统一介绍着三种
数据结构
...
赞
踩
article
2021-03-
18
-C++学习之17-
stack
、
queue
、
list
_
queue
list
c+...
一、
stack
容器1.
stack
基本概念
stack
是一种先进后出(First In Last Out, FILO)的数...
赞
踩
article
C++常用的容器:
vector
、
string
、
deque
、
stack
、
queue
、
list
、set、...
本文详细介绍了
vector
、
string
、
deque
、
stack
、
queue
、
list
、set、map以及pair对组的...
赞
踩
article
数据结构
二:表
(
list
)、栈
(
stack
)、队列
(
Queue
)_
list
是栈吗...
一、表
(
list
) 概念:形如A0,A1,A2,…,An-1的一般表,表大小n,大小为0的特殊的表位空表
(
empty l...
赞
踩
article
java
中常见的
数据结构
(list,
stack
,
queue
,linked,hashTable,tre...
本文详细介绍了
数据结构
中的核心概念,包括数组、链表、栈、队列、哈希表和二叉树。数组提供随机访问但增删不便,链表则擅长增删...
赞
踩
article
STL
—
—
list
、
stack
与
queue
_
c++
中
list
和
queue
区别...
STL
—
—
list
、
stack
与
queue
_
c++
中
list
和
queue
区别
c++
中
list
和
queue
区别 ...
赞
踩
article
C++基础(13)——
STL
(
stack
、
queue
、
list
)_
stl
queue
list
...
本文主要介绍C++中
STL
中的
stack
、
queue
和
list
容器_
stl
queue
list
stl
queue
li...
赞
踩
article
stl
map
list
queue
等容器的常用方法 (自我总结)_
map
queue
头文件
...
以下均不为完整程序
map
:#include
map
::iterator it,it1,it2; //定义迭代器
map
dt;...
赞
踩
article
C++
STL
(
queue
和
list
)_
queue
c++
list
...
STL
中的链表是一个双向循环链表,由于链表的存储方式并不是连续的内存空间,因此链表
list
中的迭代器只支持前移和后移,属...
赞
踩
article
【
c++
】
std
list
和
std
queue
的
区别_
std
:
:
queue
std
:
:
list
...
本文介绍了C++ STL中
std
:
:
list
和
std
:
:
queue
的
区别,包括它们
的
数据结构、主要操作、用途和性能考虑。...
赞
踩
article
STL
中
vector
、
list
、
deque
的
区别_
deque
vs
vector
...
1
vector
向量 相当于一个数组 在内存中分配一块连续
的
内存空间进行存储。支持不指定
vector
大小
的
存储。
STL
内...
赞
踩
article
2021年11月16日 C++ STL
queue
&&
list
&&
set
_
c++
std
queue
...
queue
构造函数:
queue
que; "
queue
采用模板类实现,
queue
对象的默认构造形式"
queue
(c...
赞
踩
article
Python
数据结构
之链表(
linked
list
)...
Python
数据结构
之链表一、链表的基本知识最近在leetcode刷题时遇到了几道关于链表的题,于是恶补了一下关于链表的...
赞
踩
article
【
Java
数据结构
】---
List
(Linked
List
)_
java
中关于
list
类的博客...
上篇博客详细写了Array
List
的相关问题,包括上图(极其重要),我会在最近几篇博客中都有附上。Array
List
的优...
赞
踩
article
ImmutableList
hessian2
序列化
失败问题分析_
java
.util.
list
can...
本文分析了使用Hessian2
序列化
时,
ImmutableList
导致的反
序列化
异常问题。当
ImmutableList
作...
赞
踩
article
Java
中
map
和
list
_
java
list
map
...
map
和
list
1、List(有序、可重复)List里存放的对象是有序的,同时也是可以重复的,List关注的是索引,拥有...
赞
踩
article
Java
集合-
List
、
Set
、
Map
等详解_
java
list
set
map...
Java
集合-Array
List
,Linked
List
,Vector,Hash
Set
,LinkedHash
Set
,Tre...
赞
踩
article
JAVA基础-
集合
(
List
与
Map
)_
java
list
map
...
程序中可能通过数组来保存多个对象,因为数组长度是不可变的。JDK中提供了一些特殊的类,这些类 可以存储任何对象,并且长度...
赞
踩
article
java
基础之集合详解
(
list
,
set
,
map
)_
list
set
map
...
虽然HashMap是线程不安全的
,
但是它的效率远远高于Hashtable
,
这样设计是合理的
,
因为大部分的使用场景都是单线...
赞
踩
article
Java
集合
之
List
,Set
集合
详细解释_
java
list
set
...
数组与
集合
数组和
集合
都是存放
Java
数据的
Java
容器,数组与
集合
底层的数据结构都是线性结构,对于数组而言,一旦声明...
赞
踩
相关标签
数据结构与算法
sketch
git
c++
开发语言
数据结构
算法
b树
list
java
stl
python
学习方法
经验分享
idea