Set集合基础学习笔记

1、增强型for循环

语法:for(数据类型  变量:集合/数组){

  }

缺点:会存在并发问题

import java.util.ArrayList;
import java.util.Collection;

public class ForDemo {
	public static void main(String[] args) {
		Collection<String> sc = new ArrayList<String>();
		sc.add("haha");
		sc.add("xixi");
		sc.add("hehe");
		sc.add("eueu");

		//增强型for循环
		/**
		 * 增强非for循环有并发问题存在(缺点)
		 * 简单,推荐使用(有点)
		 * for(数据类型 变量:集合)
		 */
		
		
		for(String c:sc){
			
			System.out.println(c);
		}
	}
}

2、set集合

一个不包含重复元素的 collection。更确切地讲,set 不包含满足 e1.equals(e2) 的元素对 e1 e2,并且最多包含一个 null 元素。

Set里面的方法绝大多数都是继承于Collection,所以set基本学完。

Set的特点:

  元素不可重复

  元素无序的(跟添加的顺序无关)

3、HashSet

此类实现 Set 接口,由哈希表(实际上是一个 HashMap实例)支持。它不保证 set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用null 元素。

HashSet的唯一性:

HashSet做添加的时候会逐个来判断当前集合中的对象和要添加的对象的比较

通过以下的条件判断两个对象是否相等

   * e.hash == hash && ((k = e.key) == key || key.equals(k))

   * hash值必须相等并且两个对象的地址值相等或者equals返回true

特点:

1.元素唯一性

2.无序行

3.允许null存在一

4.不是线程安全(效率高)


import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class SetDemo1 {
	public static void main(String[] args) {
		//创建一个set集合
		/**
		 * set的特点:
		 * 1、无序性
		 * 2、元素不可重复
		 * 3、允许有null,但是只能有1个
		 * 
		 */
		Set<String> set = new HashSet<String>();
		set.add("刘备");
		set.add("关羽");
		set.add("张飞");
		set.add("刘备");
		set.add(null);
		System.out.println(set);
		
		Iterator<String> it = set.iterator();
		
		while(it.hasNext()){
			
			String sc = it.next();
			if("张飞".equals(sc)){
				set.add("赵云");
			}
			
			System.out.println(sc);
		}
		//System.out.println(set);
	}
}

4、小结

①增强型for循环用于集合和数组的遍历时特别方便,但需要注意会出现并发问题;

②set在添加元素的时候会拿这个元素和集合中的每一个元素做比较,如果重复了就不添加,如果不重复就添加;

③判断两个对象是否相等,必须重写equals方法和hashCode方法,这两个方法都符合相等的条件才认为是相等的两个对象。



阅读更多
个人分类: java学习
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭