容器(集合:是有接口和实现类组成):容器和数组的不同之处是,容器长度可变,用来存放对象的引用(数组存放基本类型???)

  1. Collection(接口)

  1. List(接口)(有序:每个元素都有索引标记,顺序即插入顺序,可重复:满足
    e1.equals(e2))

主要是set get方法

  1. ArrayList(方法/实现类)
    底层用数组(Object[])实现。线程不安全,效率高(查询效率高,增删效率低)

  2. LinkedList:底层用双向链表实现。线程不安全,效率高(查询效率低,增删效率高)

  3. Vector:底层用数组实现。线程安全(增加了synchronized同步标记),效率低

  4. Set(无序,不可重复,只能有一个null×
    只适用于HashSet,往set中加入元素,本质就是把这个元素作为key加入到了内部的map中)

    1. HashSet(内部是使用HashMap实现(通过它来存储数据))(HashSet本质就是一个简化版的HashMap)

    2. TreeSet(不能放null)内部需要对存储的元素进行排序,因此,我们对应的类需要实现Comparable接口。这样,才能根据重写compareTo()方法比较对象之间的大小,才能进行内部排序。

新方法见书P263-264

  1. Map(没有继承Collection不重复 允许值对象为空)

采用“key-value”来存储我们(比较复杂)数据。

IMG_256

keySet()返回该集合中的所有key对象形成的Set集合

Values()返回该集合中所有值对象形成的Collection集合

  1. HashMap 底层采用了哈希表存储数据 键重复则键值对替换 线程不安全,效率高
    允许key或value为null。

  2. HashTable线程安全,效率低 不允许key或value为null。

  3. TreeMap 红黑二叉树 映射关系有一定顺序 键对象升序 不允许键对象为null

  4. Iterator( 如果遇到遍历容器时,判断删除元素的情况,使用迭代器遍历!)

通过它,可以遍历容器中元素

Iterator.next()方法返回的是Object 所以要向下强制转型

List(for,迭代器)

遍历List方法一:普通for循环

1 2 3 4 for(int i=0;i<list.size();i++){//list为集合的对象名 String temp = (String)list.get(i); System.out.println(temp);//System.out.println(list.get(i)) }

遍历List方法二:增强for循环(使用泛型!)

1 2 3 for (String temp : list) { System.out.println(temp); }

遍历List方法三:使用Iterator迭代器(1)

1 2 3 4 for(Iterator iter= list.iterator();iter.hasNext()?{ String temp = (String)iter.next(); System.out.println(temp); }

遍历List方法四:使用Iterator迭代器(2)

1 2 3 4 5 6 Iterator iter =list.iterator(); while(iter.hasNext()){ Object obj = iter.next(); iter.remove();//如果要遍历时,删除集合中的元素,建议使用这种方式! System.out.println(obj);

Set(迭代器,增强for循环)

遍历Set方法一:增强for循环

1 2 3 for(String temp:set){ System.out.println(temp); }

遍历Set方法二:使用Iterator迭代器

1 2 3 4 for(Iterator iter = set.iterator();iter.hasNext()?{ String temp = (String)iter.next(); System.out.println(temp); }

Map(keySet和entrySet)

遍历Map方法一:根据key获取value

1 2 3 4 5 Map<key, values> map = new HashMap<key, value>(); Set<key> keySet = map.keySet(); //for(key k : keySet){ //System.out.println(k); //}
for (Iterator<key> iterator = keySet.iterator(); iterator.hasNext()? { String key = (key)iterator.next(); System.out.println(key + “–” + map.get(key)); }

遍历Map方法二:使用entrySet

1 2 3 4 Set<Map.Entry<key, values>> entrySet = map.entrySet(); for (Iterator<Entry<key, values>> iterator = entrySet.iterator(); iterator.hasNext()? { Entry<key, values> e = (Entry<key, values>) iterator.next(); System.out.println(e.getKey()+"–"+e.getValue());
  1. 泛型(通过泛型将错误提前,保证程序稳定性和更高的可读性):

它可以帮助我们建立类型安全的集合。在使用了泛型的集合中,遍历时不必进行强制类型转换(泛型之前都是向上/向下转型)。 泛型的本质就是“数据类型的参数化”。
我们可以把“泛型”理解为数据类型的一个占位符(形式参数),即告诉编译器,在调用泛型时必须传入实际类型。JDK提供了支持泛型的编译器,将运行时的类型检查提前到了编译时执行,提高了代码可读性和安全性。

  1. class 类名<T> T可以用来声明数组类型T[] array T只能是类类型

  2. class 类名<T,E,V>

  3. 限制泛型class 类名<T extends anyClass> anyClass指接口/类

  4. 类型通配符 泛型类名称<?extends anyClass> 可以用在方法形参里
    A<?>=A<?Object>

限制泛型和使用通配符的区别:使用通配符声明的名称实例化的对象不能对其加入新的信息,只能获取或删除。set()×

5.向下extends也可以向上super

  1. Collections工具类(排序/查找)

. void sort(List) //对List容器内的元素排序,排序的规则是按照升序进行排序。

  2. void shuffle(List) //对List容器内的元素进行随机排列。3. void reverse(List) //对List容器内的元素进行逆续排列 。4. void fill(List, Object) //用一个特定的对象重写整个List容器。5. int binarySearch(List,

Object)//对于顺序的List容器,采用折半查找的方法查找特定对象。

哈希表(数组+链表):

[外链图片转存失败(img-g8L2x92o-1562655749060)(media/60064eb152707799667d8fce5ab96221.png)]

binarySearch(List,
Object)//对于顺序的List容器,采用折半查找的方法查找特定对象。

哈希表(数组+链表):

[外链图片转存中…(img-g8L2x92o-1562655749060)]

Entry[] table 就是HashMap的核心数组结构,我们也称之为“位桶数组”

六、容器(高琪java300集+java从入门到精通笔记)相关推荐

  1. 【160天】尚学堂高琪Java300集视频精华笔记(129)

    明天开始,专栏增加一个黑马程序员的课程更新. 其它容器收尾讲解 队列Queue与Deque(单向队列与双向队列) Enumeration(较老的接口,JDK1.5前使用频繁,维护旧系统会用到) Has ...

  2. 尚学堂 高琪JAVA300集第十一章作业 编程题答案

    本人 JAVA初学者 在寻找这一方面的答案时没有看见 ,本着分享的精神 自己做了出来 也就传上来了 水平有限 存在有错的地方或者改进的方法 ,望大佬们可以提出 万分感谢. 1.1. 设计一个多线程的程 ...

  3. java高淇_高淇java300集JAVA常用类作业

    一.选择题 1. 以下选项中关于int和Integer的说法错误的是( B D).(选择二项) A.int是基本数据类型,Integer是int的包装类,是引用数据类型 B.int的默认值是0,Int ...

  4. Java从入门到精通笔记20230106--百钱百鸡引出的疑问

    一.5文钱可以买1只公鸡,3文钱可以买1只母鸡,1文钱可以买3只雏鸡,现在用100文钱买100只鸡,那么公鸡.母鸡.雏鸡各有多少只? 1.Python写法 首先在Python刷题时遇到过,实现起来相对 ...

  5. Java从入门到精通章节练习题——第六章

    Java从入门到精通章节练习题--第六章 Exercise 1 简易计算器 Exercise 2 购买电影票 Exercise 3 计算平均分 Exercise 4 厘米与英寸互转 Exercise ...

  6. Java从入门到精通十六(函数式接口编程)

    Java从入门到精通十六(函数式接口)

  7. java从入门到精通_想要开始学java?你要的java从入门到精通布列如下!

    java从入门到精通,让我来告诉你! 毫无疑问,java是当下最火的编程语言之一.对于许多未曾涉足计算机编程的领域「小白」来说,深入地掌握java看似是一件十分困难的事.其实,只要掌握了科学的学习方法 ...

  8. 详细:JAVA从入门到精通视频教程,后台学习历程

    详细:JAVA从入门到精通视频教程,后台学习历程 ==基础部分 由于百度分享有时效性 想要免费资源的请加645969403 1.java基础:高琪java开发300集 链接:https://pan.b ...

  9. java从入门到精通二十三(Servlet)

    java从入门到精通二十三(Servlet) Servlet 说明 Servlet初步入门尝试 Servlet生命周期 Servlet方法说明和体系结构 方法说明 体系结构说明 一些优化封装 urlP ...

  10. java从入门到精通第四版明日科技书籍简介及下载

    Java从入门到精通(第4版)(附光盘) 平装 – 2016年10月20日 <Java从入门到精通(第4版)(附光盘)>从初学者角度出发,通过通俗易懂的语言.丰富多彩的实例,详细介绍了使用 ...

最新文章

  1. ShineTime - 带有 CSS3 闪亮特效的缩略图相册
  2. Android中的常见布局
  3. me21n增强BADI:ME_PROCESS_PO_CUST之process_account
  4. 多元线性回归算法python实现_手写算法-Python代码推广多元线性回归
  5. stack overflow at line
  6. ux和ui_从UI切换到UX设计
  7. 写出TREE-PREDECESSOR的伪代码(算法导论第三版12.2-3)
  8. python数字转字符串_python如何将字符转换为数字
  9. docker重命名镜像
  10. python udp编程_Python UDP编程小示例
  11. debug运行时出现错误unicodedecodeerror_怎么回事??抖音直播伴侣!出现运行错误...
  12. git学习笔记-(13-reset三部曲)
  13. 【最新砍价小程序源码】
  14. 计算机的显卡控制面板在哪里,nvidia控制面板在哪,详细教您如何进入英伟达控制面板...
  15. springcloud学习-Eureka、Eureka高可用集群、Ribbon客户端负载均衡策略
  16. MATLAB | 画彩色图像的直方图,改对比度,计算均值、方差和信息熵
  17. SLT 定义vetctor对象,vector构造函数
  18. 长文详解材料阻燃性能试验方法
  19. 玉米社:sem竞价推广如何选择投放时间、投放地域
  20. marker 上的气泡 callout的使用

热门文章

  1. Java学习方法——类的构造方法
  2. python能为我们做什么读后感作文_《与运气竞争》读书笔记 坚韧不拔|静水流深|读书|写作|博雅|数据分析|Python|商业|独立·独特·自立门户 kebook...
  3. Matlab 生成方波信号
  4. HTML做一个简单的页面(纯html代码)地球专题学习网站
  5. MySQL添加新用户、创建数据库、为新用户分配权限、收回权限
  6. Redis的数据变成backup
  7. 进击ReactNative-徐如林-React源码解析
  8. [跟进]_微软关闭MSN博客,腾讯第一时间抢占市场
  9. 算法题--广度优先算法(素数行李箱密码解法加步骤)
  10. 2015InfoQ软件大会技术记录