java list map set的区别_Java集合list,map,set区别及遍历

1.1 List、Set、Map基本区别

1 1、List,Set都是继承Collection接口,Map不是。2

3 2、List:LinkedList、ArrayList、Vector4

5 Set :HashSet、LinkedHashSet、TreeSet6

7 Map:HashMap、HashTable、TreeMap8

9 3、List元素是有序放入,可重复。(支持for循环,迭代器遍历)10

11 Set元素无序放入且唯一,不可重复,若重复元素则会覆盖。(不支持for循环,支持迭代。原因:元素无序,由改元素的HashCode决定,相对固定)12

13 4、List:动态增长,查询效率高,增删效率低(原因:因为有序,所以增加和删除元素会导致其他元素位置改变)14

15 Set:查询效率低,增删效率高(原因:因为无序,所以增加和删除元素不会导致其他元素位置改变)16

17 5:、线程安全:Vector、HashTable18

19   线程不安全:LinkedList、ArrayList、HashSet、HashMap、TreeMap

1.2 List

List的特征是其元素以线性方式存储,集合中可以存放重复对象。

ArrayList() : 代表长度可以改变得数组。可以对元素进行随机的访问,向ArrayList()中插入与删除元素的速度慢。

LinkedList(): 在实现中采用链表数据结构。插入和删除速度快,访问速度慢。

1、添加元素

1 List list=new ArrayList();2 list.add("一个元素");

2、删除元素

1 for (int i = 0; i < list.size(); i++)2 {3 User result =list.get(i);4 if (result.getId() == 3)5 {6 list.remove(result);7 System.err.println("id: " + result.getId() + "\tname: " +result.getName());8 }9 }

3、最基本的两种检索集合中的所有对象的方法:

1 1、for循环2 for(int i=0; i

6 for(String str : list){7 System.out.println(str);8 }9 2、迭代器(Iterator)10 Iterator it=list.iterator();11 while(it.hashNext()){12 System.out.println(it.next());13 }

1.3 Map

Map是一种把键对象和值对象映射的集合,它的每一个元素都包含一对键对象和值对象。

Map没有继承于Collection接口,从Map集合中检索元素时,只要给出键对象,就会返回对应的值对象。

1、增删元素操作

1 Map map = new HashMap();2 map.put("1", "a"); //添加key为1,值为a的元素

3 map.remove("1"); //删除key为1的所有元素

2、循环遍历

1 //第一种:通过Map.keySet遍历key和value,普遍使用,二次取值

2 for(String key : map.keySet()) {3 System.out.println("key= "+ key + " and value= " +map.get(key));4 }5

6 //第二种:通过Map.entrySet使用iterator遍历key和value:

7 Iterator> it =map.entrySet().iterator();8 while(it.hasNext()) {9 Map.Entry entry =it.next();10 System.out.println("key= " + entry.getKey() + " and value= " +entry.getValue());11 }12

13 //第三种:通过Map.entrySet遍历key和value,推荐,尤其是容量大时

14 for (Map.Entryentry : map.entrySet()) {15 System.out.println("key= " + entry.getKey() + " and value= " +entry.getValue());16 }17 //第四种:通过Map.values()遍历所有的value,但不能遍历key

18 for(String v : map.values()) {19 System.out.println("value= " +v);20 }

1.4 Set

Set是最简单的一种集合。集合中的对象不按特定的方式排序,并且没有重复对象。 Set接口主要实现了两个实现类:

HashSet: HashSet类按照哈希算法来存取集合中的对象,存取速度比较快。存入HashSet的对象必须定义hashCode()

TreeSet :TreeSet类实现了SortedSet接口,能够对集合中的对象进行排序。保存次序的Set, 底层为树结构。使用它可以从Set中提取有序的序列。

LinkedHashSet:具有HashSet的查询速度,且内部使用链表维护元素的顺序(插入的次序)。于是在使用迭代器遍历Set时,结果会按元素插入的次序显示。

1 Set set=newHashSet();2 String s1=new String("hello");3 String s2=s1;4 String s3=new String("world");5 set.add(s1);6 set.add(s2);7 set.add(s3);8 System.out.println(set.size()); //打印集合中对象的数目 为 2。

Set 的 add()方法是如何判断对象是否已经存放在集合中?

1 boolean isExists=false;2 Iterator iterator=set.iterator();3 while(it.hasNext()) {4 String oldStr=it.next();5 if(newStr.equals(oldStr)){6 isExists=true;7 }8 }

Set的功能方法

Set具有与Collection完全一样的接口,因此没有任何额外的功能,不像前面有两个不同的List。实际上Set就是Collection,只 是行为不同。(这是继承与多态思想的典型应用:表现不同的行为。)Set不保存重复的元素(至于如何判断元素相同则较为负责)

Set : 存入Set的每个元素都必须是唯一的,因为Set不保存重复元素。加入Set的元素必须定义equals()方法以确保对象的唯一性。Set与Collection有完全一样的接口。Set接口不保证维护元素的次序。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值