集合的数据结构
数据结构就是内存中保存输出数据的形式,不同的数据结构会有不同的特征。
堆栈结构:先进后出 代表类(stack);应用场景:java中的方法运行时所占用的空间就是这种结构。
队列结构:先进先出 代表类(Queue);应用场景:凡是需要排队的地方均可使用。
数组结构:内容的赋值(增删慢、查询快)ArrayList;应用场景:容器的查询次数多,修改次数少的时候可以使用;
链表结构:呈现链式链接(查询慢,增删快) 代表类:LinkedList 应用场景:增删多,查询少的地方可以使用。
Set集合:不包含重复元素的collectipon,更确切的说,set不包含满足e1.equals(e2)的元素对e1和e2.并且最多包含一个null元素。
在set接口下有很多子类,常用的子类,有两个:HashSet、LinkedHast
上述两个集合的数据结构中都包含hash表结构;
特征:在判断元素是否重复的时候,会先判断元素的hash值;如果hash值一致的情况下,再次判断equals方法;

hacode方法
自定义数据类型,必须重写equals和hashCode方法,缺一不可!

HashSet集合的使用
Set集合的特点:不可以存放重复的元素;无序(无索引,不能保证存与去的顺序一致)、最多只能存放一个null值。
LinkedHashSet集合
linkedHastSet属于Hash子类,可以保证存取位置一致。
HashSet与list判断元素是否重复的规则:
调用参数对象的hashCode方法,得到hash值;如果hash值与集合中已经存在的任何一个对象的hash值不一致时,直接返回false;
如果参数对象的hash值与集合中其中一个对象的hash值一致时,需要再次使用equals方法确认,如果equals方法得到true,说明两个对象一致;如果equals方法得到false,说明两个方法不相等;

HastSet的Contains方法:
比较的时候,直接通过参数对象 的hash值比较一次,再通过equals方法再确认一次即可;
list的contais方法:
比较的时候,按照比较的顺序逐次与参数比较,值到比完或比对成为止,效率低!

MAP

特点:1、map集合中的键不允许重复。2、每个键最多只能映射一个值。3、null也可以作为键和值使用。4、Map集合中值都是以键值对的形式存在,因此创建对象的时候,需要传递两个参数的值
MAP集合的常见子类
1、hashMap;2、LinkedHashMap(是hashMap的子类,可以保证存值和取值的顺序一致)
HashMap的构造方法和常用方法
构造:空参构造和传递一个map集合的构造
常用方法:
put(K,V)添加键值对,若map中已经包含了指定的key时,会使用新得value覆盖原来的value值。
remove(K)移除
get(K)通过键查询值
clear()、containsKey()、containsValue()、size()、values()获取所有的value值以单列集合存在等。
HashMap集合迭代方式1-键找值;
1、面向map集合对象,获取map中所有的键组成的一个单列集合,这个单列集合是Set;(Map的keySet方法)
2、使用增强for迭代set集合,可以获取每一个key的值;(增强for)
3、面向map集合,根据每一个key的值从map中获取对应的value的值;(map的get方法)
HashMap集合迭代方式2--键值对对象
1、面向map集合,获取所有的键值对对象组成的一个set集合;(map的entryset方法)
2、使用增强for迭代set集合,获取每一个键值对对象;(增强for)
3、面向键值对对象分别获取key和value;(Entry的getKey和getValue)
涉及到的API:map中的方法(entrySet方法)
LinnkedHashMap
HashMap存放自定义类型的key
结论:需要对Key的数据类型进行重写hahCode方法和equals方法。
可变参数:可变参数的实质就是一个数组,可以使用操作数组的方式来操作可变参数;可变参数只允许在方法的参数列表中使用。
格式:
修饰符 返回值类型 方法名(数据类型...参数名){

}
可变参数的好处:
1、可变参数是jdk1.5之后出现的新特性;
2、可变参数的实质就是数组,不能与数组的方法形成重载;
3、如果参数列表中出现多个形参时,可变参数必须放在最后边;
好处:对于方法的调用者可以传用任意多个参数!
ProPerties集合
ProPerties是hashTable的子类,是map的孙子类;map中的方法,properties都可以直接使用,不建议使用,建议使用properties自身特有的方法;
特点:1、属于双列集合;2、没有泛型,键与值得数据类型都是String;3、有与IO流相互结合的方法,可以将集合中的数据保存到硬盘上,也可以从硬盘上将数据读取到集合中;
properties集合的构造方法和常用方法
构造:空参构造和一个带有指定默认值的空属性列表。
常用方法:
setProperty:存值的方法;getProperty(String Key,String values):读值的方法。
StringPropertyNames方法,遍历
properties与IO流相结合的方法
将集合中的数据保存到硬盘上。
ongoing硬盘上将数据读取到properties

集合、set以及HASH的更多相关文章

  1. Java 集合 散列表hash table

    Java 集合 散列表hash table @author ixenos 摘要:hash table用链表数组实现.解决散列表的冲突:开放地址法 和 链地址法(冲突链表方式) hash table 是 ...

  2. 集合容器和Hash表

    集合容器 集合相当于一个容器,在我们使用Arraylist的时候添加参数相当与放了一个容器中.这里面的元素是可以重复的 在HashSet中添加元素是没有重复的,我们来写一个测试看一下 public s ...

  3. 对一致性Hash算法,Java代码实现的深入研究

    一致性Hash算法 关于一致性Hash算法,在我之前的博文中已经有多次提到了,MemCache超详细解读一文中"一致性Hash算法"部分,对于为什么要使用一致性Hash算法.一致性 ...

  4. 集合Hashtable Dictionary Hashset

    #region Dictionary<K,V> Dictionary<string, Person> dict = new Dictionary<string, Pers ...

  5. hash命令

    什么是hash ? 在网上找了好久都没找到简截有力的说明.hash 我把它当成是集合,一个hash 就是一个集合,里面字段对应一个元素,元素不重复,字段都不一样. 简单hash 命令 1.hset 哈 ...

  6. 海量数据处理利器之Hash——在线邮件地址过滤

    标题用了了海量数据(Massive datasets)而不用大数据(Big data).感觉大数据还是略微有点虚,来点实际的. 一.需求 现在我们需要设计一个在线过滤垃圾邮件地址的方案,我们的数据库里 ...

  7. Java实现一致性Hash算法深入研究

    一致性Hash算法 关于一致性Hash算法,在我之前的博文中已经有多次提到了,MemCache超详细解读一文中”一致性Hash算法”部分,对于为什么要使用一致性Hash算法和一致性Hash算法的算法原 ...

  8. Redis基本数据结构总结之SET、ZSET和HASH

    Redis基本数据结构总结 前言 Redis的特点在于其读写速度特别快,因为是存储在内存中的,其非常适合于处理大数据量的情况:还有一个是其不同于其他的关系型数据库,Redis是非关系型数据库,也就是我 ...

  9. java基础系列--集合类库(一)

    原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/7229478.html 1.概述 Java的集合类库很是丰富,囊括了大部分的常见数据结构形式 ...

随机推荐

  1. 关于EF Code First模式不同建模方式对建表产生的影响

    今天在学EF Code First模式的时候,发现几个很有趣的问题,问题如下: 1.当编写玩实体后,不指定任何主键约束,EF会找长的最像Id的,然后设置其为主键,验证代码如下: //User类 cla ...

  2. LINUX 配置默认程序

    update-alternatives 命令用于配置默认程序,版本切换 1.display 命令,查看命令链接信息 update-alternatives --display name 2.insta ...

  3. 使用Hibernate Tools从数据库逆向生成Hibernate实体类

    自动生成model.java.*.hbm.xml 甚至是dao.java.*.ddl.*.html等等.一般也就如下三种方式1. MyEclipse 自带插件2. jboss的 hibernate-t ...

  4. python 使用标准库连接linux实现scp和执行命令

    import stat import pexpect 只显示关键代码: sqldb = localpath+database //获取database名字 if os.path.exists(sqld ...

  5. Very Simple Problem

    Very Simple Problem Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u ...

  6. 数据库无法连接JDBC

    解决:Connections could not be acquired from the underlying database! 博客分类: 问题解决 数据库 iBatis   og4j:WARN ...

  7. CentOS恢复root口令方法

    CentOS6和CentOS7恢复root口令的方法有很大不同 CentOS6: 在引导菜单倒计时界面按任意键,进入grub引导菜单 按e键进入内核引导参数编辑界面 选中kernel项,按e键编辑引导 ...

  8. asp.net 自定义的模板方法接口通用类型

    本来想写这个帖子已经很久了,但是公司事情多,做着做着就忘记了.公司因为需要做接口,而且用的还是asp.net的老框架,使用Handler来做,没得办法,自己照着MVC写了一个通过的接口操作模板. 上送 ...

  9. Minix3信号处理分析

    进程的信号处理的相关结构 PM中存放着所有进程的进程描述符,在一个进程描述符中,有一个指针,指向一个sigaction结构二维数组中的一项,表示这个进程所有信号的操作.一个sigaction结构包含信 ...

  10. VMware系统克隆

    第1章 搭建VMware实战环境 1.1 vmware主机配置-网络配置 1.1.1 虚拟主机添加网卡信息(5) a.右键虚拟主机→设置→添加虚拟网卡硬件设备 b.设置网络适配器类型→完成添加 1.1 ...