J2EE之旅(Set集合框架、Map集合)终

大家好,我们又见面了还是下面一张图

上期我们讲了我们的List集合框架的一些特点,这期我们来讲第二个集合框架

set集合框架

一.Set

1、set集合的特点

1.1 无序

我们运行一下代码

		Set set=new HashSet();
		
		set.add("aa");
		set.add("大聪明");
		set.add("哈哈哈");
		set.add("嘿嘿嘿");
		
		for (Object object : set) {
			System.out.println(object);
		}

        如下图:

 如上图可以知道打印后顺序与增加的顺序不一致了,这验证了Set集合的无序

1.2.元素不可以重复

我们运行以下代码

Set set=new HashSet();
		
		set.add("aa");
		set.add("大聪明");
		set.add("哈哈哈");
		set.add("嘿嘿嘿");
		
		for (Object object : set) {
			System.out.println(object);
		}
		System.out.println("---------------");
		set.add("aa");
		for (Object object : set) {
			System.out.println(object);
		}

如上诉代码我们可以看到我们新增了一个重复的元素,当打印重来后却没有看到重复的元素,

这验证了我们Set集合的元素不可重复这一特点

2、遍历方式

 Set集合的遍历方式只有两种

2.1 .foreach方法

for (Object object : set) {
	System.out.println(object);
}

2.2 迭代器

Iterator it = set.iterator();
		
while(it.hasNext()) {
		Object object = it.next();
		System.out.println(object);
}

3.常见实现类

HashSet

TreeSet:根据某种(规则对里面的元素进行排序)

 自然比较接口: java.lang.Comparable 
        比较器: java.util.Comparator
        String以AscII码进行比较,返回差值

  LinkedHashSet:
  1)元素是有顺序的
  2)元素是不重复的
  3)底层数据结构是按照链表的结构存储的 Linked

这里也推荐一个实用的工具类

Collctions,大家在网上可以搜索这个,有大量的方法,大家感兴趣的可以取研究研究

二、Map集合(不继承Conllection接口)

1.特点:无序、以键值对的形式存储数据、键不可以重复(Set),值可以重复(List)

我们先用代码来验证map集合的无序

	Map<String, Object> map=new HashMap<String,Object>();
		map.put("大聪明", "aa");
		map.put("小明", "bb");
		map.put("大黄", "cc");
		map.put("小红", "dd");
	
		Set<String> keySet = map.keySet();
		
		for (String string : keySet) {
			Object object = map.get(string);
			System.out.println(string+"="+object);
		}

打印结果

可以看到我们增加的顺序与打印的结果顺序不一致,验证了map集合的特点1无序

 在用以下代码运行得到

map.put("小红", "dd1");
		for (String string : keySet) {
			Object object = map.get(string);
			System.out.println(string+"="+object);
		}

这个结合我们上面代码在添加的

输出结果

可以看到我们后续增加的值键是一致的,并且把前面一致的键,值覆盖了 ,这验证的map键不能重复

2.遍历方式

先获取map集合中的键的set集合,在通过键获取map集合中的值

Map<String, Object> map=new HashMap<String,Object>();
		map.put("大聪明", "aa");
		map.put("小明", "bb");
		map.put("大黄", "cc");
		map.put("小红", "dd");
	
		Set<String> keySet = map.keySet();
		
		for (String string : keySet) {
			Object object = map.get(string);
			System.out.println(string+"="+object);
		}

获取map集合中的键值对(entry)的set集合,在分别从entry中获取键和值

Set<Entry<String, Object>> entrySet = map.entrySet();
		
		for (Entry<String, Object> entry : entrySet) {
			System.out.println(entry);
			System.out.println(entry.getKey());
			System.out.println(entry.getValue());
		}

个人还是推荐第二种,可以随意拿到键或者值

3.HashMap与HashTable之间的区别

同步既排队  线程安全的     hashtable  键不可以为null,值也不能为null
  异步        非安全的   hashmap  键可以为null,值也可以为null

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值