java中list、set和map 在什么场景下使用?

作者&投稿:前甄 (若有异议请与网页底部的电邮联系)
Java实际开发中set,Map,List分别用在什么情况?~

set、map、list是Java API封装的数据结构。之所以封装它们,是为了符合数学意义上的set、map和list上的一些特点。
比如set(集合)具有无序性,而且元素不能重复。
map主要是散列思想,即key-value值对。
list是链表结构,插入和删除元素,一个在头,一个在尾。
另外还有Stack是同一端插入和删除。
你说他们功能一样其实是错的,虽然对于某些问题用他们都可以解决,比如迷宫问题,可以用Stack,可以用链表,甚至可以直接用个简单的一维数组(因为多维数组可以由一维数组表示),但是解决时的复杂度是不同的。这其中除了算法中的时间、空间代价的不同(比如使用散列,搜索时间大大减少,但是占用空间增大),当然还包括使用不同数据结构解决不同问题时的“自然”程度(即让别人容易明白你的算法的程度)。
说了这么多,其实封装这些东西就是为了方便编程,方便实现功能。
就像你可以说:“一条语句和一个函数(语句组成)本质上都是相同的,那为什么要那么麻烦设计函数?”那你就可以去查查函数编程思想和之后发展起来的面向对象编程思想的优势。

最后再提下Java里面一些高级点的东西,即所谓线程安全,某些数据结构封装类不是线程安全的,而另外一些是,这些你可以去查看API或者底层代码实现,要花费很大耐心的

key value 键值对 用map

数据唯一但是无序 用set
有序数据不唯一 用 list

有序唯一 用 treeset
key value 且有序 用 LinkedHashMap

list 列表
set 集合
map 映射

从词义上可以看出来它们的大概作用:

列表是顺序存放对象的,可以有相同的对象,通过索引存取;

集合是无序存放对象的,其中不能有重复的对象(唯一的,回忆高中时候数学中学习的集合特性),集合没有索引,只能遍历次存取;

映射,存放的是键与值的映射,其中键是唯一的(不能有重复对象),而值可以有重复的对象,存的时候,需要指定键和对应的值,取的时候可以根据键名取到值,也可以遍历。

至于在什么时候使用,这个是要因地制宜的。
列表,在能直接使用数组的时候,就有使用列表,如一个班的学生的成绩,成绩是可以重复的;
集合,一般用于存放无序的(指顺序不重要)不能重复的对象,如一个班的学生的学号,学号是不能重复的;
映射,用于存放具有对应关系的键值对,如一个班的学生的学号与姓名的映射,每个学号对应了一个学生的姓名,学号不能重复,但是姓名可能会重复;

list里面可以存放多个对象,遍历的时候根据顺序或位置取
set你说的是set方法么?set方法可以给对象的某个属性赋值
map也是可以存放所个对象的,不过和list不同,每个value对应一个key,根据key值来取,比较方便

set --其中的值不允许重复,无序的数据结构
list --其中的值允许重复,因为其为有序的数据结构
map--成对的数据结构,健值必须具有唯一性(键不能同,否则值替换)

List按对象进入的顺序保存对象,不做排序或编辑操作。Set对每个对象只接受一次,并使用自己内部的排序方法(通常,你只关心某个元素是否属于Set,而不关心它的顺序--否则应该使用List)。Map同样对每个元素保存一份,但这是基于"键"的,Map也有内置的排序,因而不关心元素添加的顺序。如果添加元素的顺序对你很重要,应该使用 LinkedHashSet或者LinkedHashMap.


"OAOT"是什么的缩写,以及它在英语中的含义和用法?
在教育领域中,我们常常遇到一个英语缩写词"OAOT",它实际上是"Opiskelun aloituksen osallistava tuki"的缩写,中文翻译为“参与学习初始阶段的支持”。这个缩写词主要用于描述对学习新阶段参与者的辅助措施。它在学术和教育交流中具有一定的使用频率,尤其是在描述为新学期学生提供的各类支持服务时。O...

电脑上什么射击游戏最好玩?
《战地》:《战地》以大规模的载具和步兵在大地图上协同作战为品牌卖点,注重游戏娱乐性的同时兼顾真实性。所有战地系列的游戏作品都有多元化的载具,可以分为陆海空三类。游戏中玩家可以选择不同的兵种。不同的兵种有不同的装备,适合执行不同的任务。《狙击手:幽灵战士》:《狙击手:幽灵战士》游戏是...

2012了,有什么好玩的射击网游,CF,CSOL,,热血战队,生化战场,这些我都...
首先先说一下这些游戏玩不了多久就会很腻很腻很无聊单纯的射击 你可以去试试《全球使命》这款虚幻引擎3国产射击网游,如果你相信自己电脑配置可以把画面挑到最高,他是跟 CF CS AF AVA 等等不同,它是一款第三人称射击网游这款游戏没有跳跃,有的只是翻滚,快跑,还有各种掩体,掩体下可以做...

天津的英文介绍是什么?
天津也是六座超大城市之一。以下是我整理的英语 文章 :天津英文介绍, 希望能对大家的 英语学习 有帮助。Tianjin (Jin for short) is a municipality direct under the Central Government, as well as an opening city. It's situated in the eastern part of the North China Plain, ...

推荐一款手机,诺基亚的,400元左右,有gava应用,GPRS应用,还能用数据线...
你只能买个在淘宝买个二手的5300一类的了。新的恐怕真的没有。

求 钢炼的歌的歌词
用你的手切断遥远日子的记忆 使我终止悲哀的生命 喂!穿过被爱焚烧的心 张望著理应到来的明天的天空 不知如何处置犹豫不决的心 身旁的鸟儿颤动翅膀,或许已找到光芒 喂!能让我骑在你的背上吗?然后把我搁置在最高处,远离那份温柔 用你的手切断遥远日子的记忆 使我终止悲哀的生命 喂!穿过被爱...

让一个div不受上一层的影响
\/*---{tag_首页图片循环标签}*---\/ .pic_list li { 内容 } \/*---{tag_首页图片循环标签}---*---\/ .text_list li { 内容 } bigbox li { 内容 } 总之一句话,分别单独定义,如再搞不定,发到我邮箱xiaozhenyu2005@163.com,我帮你写,50分对于我来讲,诱惑力实在太大了 ...

lefigaro历史
rfi则是针对世界开放的广播台,网站上有francais facile的新闻和正常语速的新闻,可以下载mp3,我给你的这个网址是他们的节目单,直接点击节目名称就可以进入下载页面的:\/\/rfi.fr\/radiofr\/listes\/001\/liste_emissions_theme.asp3.le monde是比较中立的新闻网站(法国的报纸有左右派之分,像la liberation解放报我就不写...

英文名字
知道Jacky和Andy是英文名,而Cheung和Lau则是张和刘的英文。谁能告诉我... 经常看到有明星的英文名字,例如张学友:Jacky Cheung。刘德华是Andy Lau。知道...Ava,Christina,Judy,Susan,Grace,Alice水瓶座男性最适合的英文名: Paul,Sam,Francis,Lewis,Stephen,Andy,Scott-水瓶座女性最适合的英文名:Joyce,Sally,...

DM磁盘管理工具的功能
在主菜单中输入I后,进入初始化菜单下:屏幕显示 INITALIZATION MENU: HELP AVALABLE BY PRESSING F1 (I)nturn or (V)erify surface (D)efect-list management (R)eturn to main menu Select an option(R)_此菜单中又有4个选择项:I、V、D、R:A、选I进入初始化后,屏幕提问: Is the ...

独山子区13533403934: java中list和map的区别 -
说娥毕思: 1、Java中的集合包括三大类,它们是Set、List和Map,它们都处于java.util包中,Set、List和Map都是接口,它们有各自的实现类.Set的实现类主要有HashSet和TreeSet,List的实现类主要有ArrayList,Map的实现类主要有HashMap和TreeMap. ...

独山子区13533403934: java中list,set和map 的区别 -
说娥毕思: Set,List,Map的区别 java集合的主要分为三种类型:Set(集) List(列表) Map(映射) 要深入理解集合首先要了解下我们熟悉的数组:数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型),而JAVA集合可以存...

独山子区13533403934: Java中List、Set、Map接口之间的区别和联系 -
说娥毕思: 首先list与set都继承于Collection,list序列的形式存储元素.所以取出来的顺序可能和放入顺序不同.set的特点是无法存放重复的元素.map一个映射不能包含重复的键;每个键最多只能映射一个值.以键值对存放数据以上三个都是接口且不能被实例化.

独山子区13533403934: Java中Set、List、Map集合类(接口)的特点及区别.分别有哪些常用实现类. -
说娥毕思: list与Set、Map区别及适用场景1、List,Set都是继承自Collection接口,Map则不是2、List特点:元素有放入顺序,元素可重复 ,Set特点:元素无放入顺序,元素不可重复,重复元素会覆盖掉,(注意:元素虽然无放入顺序,但是元素在set中的...

独山子区13533403934: Java集合类List/Set/Map的区别和联系 -
说娥毕思: 常用的集合类有一下几种: List结构的集合类:ArrayList类,LinkedList类,Vector类,Stack类 Map结构的集合类:HashMap类,Hashtable类 Set结构的集合类:HashSet类,TreeSet类 Queue结构的集合:Queue接口 HashMap和Hashtable的区...

独山子区13533403934: java中list、set和map 在什么场景下使用? -
说娥毕思: list 列表 set 集合 map 映射从词义上可以看出来它们的大概作用:列表是顺序存放对象的,可以有相同的对象,通过索引存取;集合是无序存放对象的,其中不能有重复的对象(唯一的,回忆高中时候数学中学习的集合特性),集合没有索引...

独山子区13533403934: Java中的Set List Map存储方式个各有什么不同 -
说娥毕思: 你可以将任何东西放到一个List容器中,并在需要时从中取出.ArrayList从其命名中可以看出它是一种类似数组的形式进行存储,因此它的随机访问速度极快,而LinkedList的内部实现是链表,它适合于在链表中间需要频繁进行插入和删除操作....

独山子区13533403934: Java集合中List和 Map区别? -
说娥毕思: 一个是存储单列数据的集合,,另外一个是存储键和值这样的双列数的集合,List中存储的数据是有顺序的,并且允许重复...Map中存储的数据是没有顺序的,其键是不能重复的,它的值是可以有重复的...List继承Collection接口,,Map不继承Collection接口.

独山子区13533403934: Java实际开发中set,Map,List分别用在什么情况? -
说娥毕思: 其实实际开发中 就list和map用的多点 list嘛 比如你从数据库里读了很多条记录 经过处理封装成对象 就可以装在一个该对象类型的list里面 就可以迭代访问里面每个对象,里面的对象是有顺序的,只有索引,你不能通过对他们取别的名字之类的得到她 ;map呢 是key-value组成的键值对;value可以是任意object;key是一个String;你可以通过key访问value;比如在servlet技术中 放在request里的东西 response 里的东西这些都是map;还有比如解析xml的时候 你读到的东西 也可以用map来保存

独山子区13533403934: JAVA中的集合类.set list map 数据容器的请教
说娥毕思: map是带键值的容器,值是一个pair set是存储值的容器. map和set都基于红黑数 list是顺序容器,相当于链表的作用.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网