集合 ArrayList

丑数: 能被3,5,7整除多次,

ArrayList

    list 接口

            | - ArrayList

            | - LinkedList

    ArrayList 内部封装一个数组

    用数组存放数据

    默认初始容量是 10,

    放满后会新建1.5倍的长度的新数组

    之前数据复制放入新数组,之前数组释放

    数组访问效率高,任意位置都是

    但是增删数据效率可能低

    创建对象

           new ArrayList();

           初始容量10

           new ArrayList(1000);

           初始容量 指定 1000

    方法

           与LinkedList 相同

           没有两端操作数据的方法

           iterator();方法

                    hasNext();

                    next();

                    remove();  

            迭代器遍历期间,不能使用 list 增删数据,

            迭代期间删除必须使用 iterator.remove();

          

   HashMap  哈希表 / 散列表

             存放键值对数据

             键不重复,数据无序

                          

             作用: 用键快速查找速度

              方法:

                   put(key,value); 放入键值对数据,重复键覆盖原值

                   get(key);取键对应的值,键不存在 返回 null

                   size();键值对的数量

                   remove(key);移除键值对,返回被移除的值

                   keySet(); 把HashMap 里面所有键取出放入HashSet里面

  •  哈希算法      

  1. 用数组存放数据,初始长度16

  2. 存放数据的过程: 先获得键的哈希值, key.hashCode();
  3. 用哈希值和数组长度来计算一个下标值 index
  4. 将键和值进行封装成 Entry 对象
  5. Entry 对象,放入 index 位置

空位置,直接放入

有数据,依次用 equals() 比较键是否相等

找到相等的,覆盖值

没有相等,链表连在一起

负载率,加载因子到 0.75(既数据数量到数组容量的0.75)

新建容量翻倍的新数组

所有数据,重新哈希,放入新数组

jdk 1.8以后

链表长度到 8, 转成红黑树(二叉树结构,小的往左放,大的往右放)(比大小比键的哈希值)

红黑树长度减少到 6, 转成链表

  • HasCode()  
  1. 从object 继承的方法
  2. 默认实现是使用内存地址值作为哈希值
  3. 可以在子类中重写这个方法, 用对象的属性数据计算哈希值
  • HashSet
  1. 用hashmap 放数据
  2. 数据不重复且无需
  3. 方法:
  4. add(数据)
  5. remove(数据)
  6. size()
  7. iterator() 迭代器
  •    Iterator 接口
  1. 使用集合的 iterator() 方法创建的迭代器对象,都是接口的子类型对象
  2. 迭代器使用期间,不能直接使用集合来增删数据
  3. 方法:
  4. hashNext()
  5. next()
  6. remove()
  •  Collections 工具类
  1. addAll(集合,值1,值2,值3,值4...); 集合多个添加数据
  2. sort(集合);排序   可以自己设置比较器
  3. binarySerarch(集合,目标值);  有序集合二分法查找,可以自己设置比较器
  4. swap(集合,a,b);交换a,b 位置
  • for-erch 循环
    • 是对数组遍历访问,集合迭代遍历访问的语法简化
    • for-each简化语
    •  for(String s :a){
      // 处理 s
      }
    • 集合的迭代遍历
for(Iterator<Intger>it=list.iterator;it.hasNext();){
Integer s = it.next();
}
    • for-each简化语法

      for(String s : list){
      
      }
    • foreach 语法, 对集合有要求
      • 要求集合必须实现 Iterable 接口
      • 必须是 Iterable 接口的子类,才能用foreach

       

java - day011 - 集合, ArrayList HashMap,HashSet, Iterator 接口, for-each 循环格式的更多相关文章

  1. java 数据结构(八):Iterator接口与foreach循环

    1.遍历Collection的两种方式:① 使用迭代器Iterator ② foreach循环(或增强for循环)2.java.utils包下定义的迭代器接口:Iterator2.1说明:Iterat ...

  2. java集合(2)-Collection与Iterator接口

    1 package com.j1803.collectionOfIterator; 2 import java.util.ArrayList; 3 import java.util.Collectio ...

  3. java集合 之 Collection和Iterator接口

    Collection是List,Queue和Set接口的父接口,该接口里定义的方法即可用于操作Set集合,也可以用于List和Queue集合.Collection接口里定义了如下操作元素的方法. bo ...

  4. 浅谈Java语言中ArrayList和HashSet的区别

    Java语言中ArrayList和HashSet的区别 2019-04-10   13:22:49 一.基本区别 首先一起看个实例,其代码如下: package com.MrZ_baby.com; i ...

  5. Java中如何克隆集合——ArrayList和HashSet深拷贝

    编程人员经常误用各个集合类提供的拷贝构造函数作为克隆List,Set,ArrayList,HashSet或者其他集合实现的方法.需要记住的是,Java集合的拷贝构造函数只提供浅拷贝而不是深拷贝,这意味 ...

  6. Java集合【2】--iterator接口详解

    目录 一.iterator接口介绍 二.为什么需要iterator接口 三.iterator接口相关接口 3.1 ListIterator 3.2 SpitIterator 3.2.1 SpitIte ...

  7. Java容器深入浅出之Collection与Iterator接口

    Java中用于保存对象的容器,除了数组,就是Collection和Map接口下的容器实现类了,包括用于迭代容器中对象的Iterator接口,构成了Java数据结构主体的集合体系.其中包括: 1. Co ...

  8. 【Java必修课】ArrayList与HashSet的contains方法性能比较(JMH性能测试)

    1 简介 在日常开发中,ArrayList和HashSet都是Java中很常用的集合类. ArrayList是List接口最常用的实现类: HashSet则是保存唯一元素Set的实现. 本文主要对两者 ...

  9. JAVA基础——集合——ArrayList

    ArrayList集合 ArrayList的一些方法(JDK1.8): 将指定的元素附加到列表的末尾,true:添加成功,false:添加失败: public boolean add(E e)    ...

随机推荐

  1. PAT 甲级 1072 Gas Station (30 分)(dijstra)

    1072 Gas Station (30 分)   A gas station has to be built at such a location that the minimum distance ...

  2. 对String对象进行JSON序列化

    对对象进行JSON序列化,会得到类似key:value的形式. 但是如果对一个String字符串进行JSON序列化会得到什么? 测试下: public class TestMain2 {     pu ...

  3. 【MPEG】DVB / ATSC / ISDB区别

    硬件的区别: 欧洲“DVB标准”和美国“ATSC数字电视标准”的主要区别如下: (1)方形像素:在ATSC标准中采纳了“方形像素”(Square Picture Eelements),因为它们更加适合 ...

  4. IDEA 配置默认pom,logback模板,XML模板

    Default pom模板 <?xml version="1.0" encoding="UTF-8"?> <project xmlns=&qu ...

  5. kafka那些事儿

    1 为什么用消息队列 1)解耦.服务之间没有强依赖,不需要关心调用服务时出现的各种异常,服务挂掉后接口超时等问题 2)异步.解决接口调用多服务时延时高的问题 3)高峰期服务间缓冲.解决工作节奏不一致问 ...

  6. LeetCode 459. 重复的子字符串(Repeated Substring Pattern)

    459. 重复的子字符串 459. Repeated Substring Pattern 题目描述 给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成.给定的字符串只含有小写英文字母,并且 ...

  7. D2.Docker: 安装部署相关问题

    [mysql] docker 安装完mysql 后客户端无法访问

  8. [ClickOnce] - Win10 管理员模式下无法安装 ClickOnce 之解决

    Issue Windows 10 管理员模式下,点击 ClickOnce 安装程序无反应. 解决 1. 按 WIN+R 键打开“运行”窗口,输入 “gpedit.msc" 打开组策略.2.  ...

  9. xsy 2018 【NOIP2013】货车运输

    [NOIP2013]货车运输 Description A 国有n座城市,编号从1到n,城市之间有m条双向道路.每一条道路对车辆都有重量限制,简称限重.现在有q辆货车在运输货物,司机们想知道每辆车在不超 ...

  10. 【HC89S003F4开发板】9ASM写定时器1

    HC89S003F4开发板ASM写定时器1 一.实现过程 1.外部寄存器设置 扩展 XSFR 采用和 XRAM 同样的访问方式,使用 MOVX A, @DPTR 和 MOVX @DPTR ,A 来进行 ...