Java实际开发中set,Map,List分别用在什么情况?

我不是要知道这三个集合的区别,我想知道具体什么情况使用什么集合比较合适,求高人指教,谢谢

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

最后再提下Java里面一些高级点的东西,即所谓线程安全,某些数据结构封装类不是线程安全的,而另外一些是,这些你可以去查看API或者底层代码实现,要花费很大耐心的
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-03-21
如果你只是要取得一堆的对象,不需要排序,只在意一个对象在或不在集合里,就用set
如果在第一条的基础上,你还想能方便快速地取出其中的某一个,就用map,把一个独一无二的标志性的对象属性做为key
如果你对这堆对象有顺序要求,就用list
第2个回答  推荐于2017-09-19
其实实际开发中 就list和map用的多点
list嘛 比如你从数据库里读了很多条记录 经过处理封装成对象 就可以装在一个该对象类型的list里面 就可以迭代访问里面每个对象,里面的对象是有顺序的,只有索引,你不能通过对他们取别的名字之类的得到她 ;
map呢 是key-value组成的键值对;value可以是任意object;key是一个String;你可以通过key访问value;比如在servlet技术中 放在request里的东西 response 里的东西这些都是map;还有比如解析xml的时候 你读到的东西 也可以用map来保存本回答被提问者采纳
第3个回答  2011-03-21
set 一般无序不重复.
map kv 结构
list 有序

就个人而言.list 用的比较多. 其次map 最后set
至于什么情况下使用什么集合.看情况了. 也不好说.也没那么绝对.
第4个回答  2011-03-21
完全不相关的东西,如果用起自然就合适。不会冲突的。
相似回答