Set集合基础学习笔记

原创 2018年04月16日 22:36:19

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初学之路----List集合和Set集合(上)

好悲催啊,国庆不想回家,就只有宅在寝室跟自己玩了。空间里朋友圈里都在秀旅游,有去重庆的,有去上海的。 不过还好我这几天是有准备的—-跟代码一起玩耍呗。哈哈哈哈哈~ 我是真的感觉自己好菜,大...
  • yang957862615
  • yang957862615
  • 2016-10-04 22:41:45
  • 1383

Python基础知识1:列表list、集合set

1、列表list列表的数据项不需要具有相同的类型1)创建列表:只要把逗号分隔的不同的数据项,且使用[]括起来,比如:list=[]list1 = ['physics', 'chemistry', 19...
  • PbGc396Dwxjb77F2je
  • PbGc396Dwxjb77F2je
  • 2017-12-17 00:00:00
  • 933

java基础知识学习重点总结

软件:一系列按照特定顺序组织的计算机数据和指令的集合。 程序:完成指定功能的一条指令。 软件=数据+很多程序。 计算机语言:用于人与计算机之间通讯的语言。 机器语言:1.二进制,由一段...
  • jesse715
  • jesse715
  • 2018-01-14 21:37:33
  • 81

Redis从基础命令到实战之集合类型(Set)

Redis集合类型的基础功能也是存储字符串列表,和列表类型的区别是字符串不能重复且没有顺序。当然,存储元素唯一性也可以通过应用程序保证,单从这一点上并没有体现出和列表类型的差异。 其实,集合类型的一个...
  • autfish
  • autfish
  • 2016-06-22 15:57:08
  • 8063

Python 学习笔记之十二——标准库概览 --第Ⅱ部分

标准库第二部分,主要有格式化输出、string 模版通用的Template 类,二进制数据记录格式、多线程、日志、弱引用、列表工具、十进制浮点数运算等内容...
  • Jeff_Liu_Sky
  • Jeff_Liu_Sky
  • 2016-09-09 21:34:08
  • 923

《Java集合》学习笔记

Java集合主要分为以下3中类型: - Set(集):集合中的对象不按特定方式排序,并且没有重复对象。它的有些实现类能对集合中的对象按特定方式排序 - List(列表):集合中的对象按照索引位...
  • lzh398651363
  • lzh398651363
  • 2016-07-28 22:24:23
  • 174

JAVA基础知识之Set集合

Set集合的基本特征是不记录添加顺序,不允许元素重复(想想是为什么)。最常用的实现类是HashSet. 本文将要介绍以下内容 HashSet类 HashSe的特征HashSet的equa...
  • solafy
  • solafy
  • 2016-10-28 23:22:11
  • 11485

Set Cover Problem (集合覆盖问题)

首先我们需要来看一下英文解释: http://pages.cs.wisc.edu/~shuchi/courses/880-S07/scribe-notes/lecture03.pdf The S...
  • woshihanxibei
  • woshihanxibei
  • 2015-02-20 19:48:18
  • 4819

Set 集合以及Set集合的一些常用方法

set 数组 1、set数组是一个不包含重复元素,无序的元素的集合。 2、set 数组的实现类是HashSet和LinkedHashSet,set接口继承于Collection接口,而Collecti...
  • Strangerpedestrain
  • Strangerpedestrain
  • 2017-08-12 09:55:07
  • 2979

对java set集合的理解与学习

java 集合是用来存储数量不等的多个对象,并可以实现常用的栈,队列等,还可以保存具有映射关系的关联数组,集合下面分为,set ,list,map     首先set 集合就像一个罐子,多个对象丢进去...
  • u011230322
  • u011230322
  • 2016-06-12 23:22:27
  • 4769
收藏助手
不良信息举报
您举报文章:Set集合基础学习笔记
举报原因:
原因补充:

(最多只允许输入30个字)