个人为了复习一下Java基础, 在网易云课堂上报了翁恺老师的Java语言程序设计进阶篇的课程, 主要看了其中的3. 对象容器, 6. 设计原则, 7. 抽象与接口, 8. 控制反转与MVC模式这几部分的内容.
同时也决定将这些内容都以博客的形式来复习和总结一下!

对象容器

  1. 顺序容器
  2. 对象数组
  3. 集合容器(Set)
  4. Hash表

顺序容器

在程序设计中, 我们如果要记录很多数? 这时, 我们一般会去定义并创建一个数组.
int[] numbers = new int[100];

我们知道, 数组是一种数据结构, 能记录同一种类型的多个数据.

  • 数组中的每个数据叫做元素
  • 所有的元素具有相同的数据类型
  • 一旦创建, 不能改变其大小

而这里的数组就是一个容器.
是一种容器(放东西的东西), 可以理解为存储数据的东西.

在这里, 由数组引入了一种顺序容器ArrayList, 下面是课程中演示的代码NoteBook.java, 主要演示了其用法:

package demo;import java.util.ArrayList;/*** @author menglanyingfei* @date 2017-7-14*/
public class NoteBook {private ArrayList<String> notes = new ArrayList<String>();//private int size = 0;public void add(String s) {notes.add(s);//size++;}public void add(String s, int location) {notes.add(location, s);}public int getSize() {return notes.size();}public String getNote(int index) {return notes.get(index);}public void removeNote(int index) {notes.remove(index);}public String[] list() {String[] a = new String[notes.size()];
//      for (int i = 0; i < notes.size(); i++) {//          a[i] = notes.get(i);
//      }notes.toArray(a);return a;       }public static void main(String[] args) {String[] a = new String[2];a[0] = "first";a[1] = "second";NoteBook nb = new NoteBook();nb.add("first");nb.add("second");nb.add("third", 1);System.out.println(nb.getSize());System.out.println(nb.getNote(0));// 会引起异常//System.out.println(nb.getNote(10));System.out.println(nb.getNote(1));nb.removeNote(1);String[] arr = nb.list();for (String str : arr) {System.out.println(str);}}
}

对象数组

核心观念(这句话说得很经典!):
当数组的元素的类型是类的时候,数组的每一个元素其实只是对象的管理者而不是对象本身。
因此,仅仅创建数组并没有创建其中的每一个对象!

集合容器(Set)

在这里, Set集合可以理解为数学中的集合的概念:
所有的元素都具有唯一的值,元素在其中没有顺序。

Hash表

Hash表,有的地方翻译为散列表。
传统意义上的Hash表,是能以int做值,将数据存放起来的数据结构。
Java的Hash表可以以任何实现了hash()函数的类的对象做值来存放对象。
Hash表是非常有用的数据结构,熟悉它,充分使用它,往往能起到事半功倍的效果。

对比HashMap和ArrayList:
在ArrayList里, 我们可以存重复的单值, 而在HashMap的双列集合中, 有K, V两个值, K是唯一的, 而V是可以重复的.
示例:

Map<Integer, String> map = new HashMap<Integer, String>();map.put(1, "haha");map.put(2, "happy");map.put(3, "good");map.put(1, "ha");map.put(5, "good");System.out.println(map);// {1=ha, 2=happy, 3=good, 5=good}

最后, 也贴出老师的示例代码, 是一步步跟着敲的!
Coin.java:

package demo;import java.util.HashMap;
import java.util.Scanner;/*** @author menglanyingfei* @date 2017-7-14*/
public class Coin {// HashMap  K是唯一的private HashMap<Integer, String> coinnames = new HashMap<Integer, String>();public Coin() {coinnames.put(1, "penny");coinnames.put(10, "dime");coinnames.put(25, "quarter");coinnames.put(50, "half-dollar");coinnames.put(50, "五毛");System.out.println(coinnames.keySet().size());System.out.println(coinnames);for (Integer k : coinnames.keySet()) {String s = coinnames.get(k);System.out.println(s);}}public String getName(int amount) {if (coinnames.containsKey(amount)) {return coinnames.get(amount);} else {return "NOT FOUND";}}/*** @param args*/public static void main(String[] args) {Scanner in = new Scanner(System.in);int amount = in.nextInt();Coin coin = new Coin();String name = coin.getName(amount);System.out.println(name);}}

本文到此结束啦!
明天继续总结6. 设计原则, 顺手贴下写这篇博客时的歌曲的链接
现在开始(本兮)
听歌能愉悦心情, 也能使人充满力量! Fighting on!
现在时间:
2017/07/15
23:15:00

网易云课堂Java进阶学习笔记系列01 -- 第3周 对象容器相关推荐

  1. 网易云课堂Java进阶学习笔记系列03 -- 第7周 抽象与接口

    第七周 抽象与接口 在第一周就有一个Shape类的例子.这个类有很多的子类,每个子类也都实现了父类的方法.实际上父类Shape只是一个抽象的概念而并没有实际的意义. 举例案例理解 如果请你画一个圆,你 ...

  2. 网易云课堂web安全学习第七天——了解点击劫持

    第一 什么是点击劫持 通过覆盖不可见的框架误导受害者点击而造成的攻击行为 特点:隐蔽性高        骗取用户操作    UI-覆盖攻击 利用iframe或者其他标签的属性 第二 他是如何实现的 & ...

  3. 史上最强Tomcat8性能优化,网易云课堂java高级架构师

    点击"Server Status",输入用户名.密码进行登录,tomcat/tomcat 登录之后可以看到服务器状态等信息,主要包括服务器信息,JVM,ajp和http信息 AJP ...

  4. opencv进阶学习笔记12:轮廓发现和对象测量

    基础版笔记目录: python3+opencv学习笔记汇总目录(适合基础入门学习) 进阶版笔记目录链接: python+opencv进阶版学习笔记目录(适合有一定基础) 轮廓发现 1轮廓发现介绍 基础 ...

  5. 网易云课堂Java入门视频课程

    课程概述 本课程不提供教学服务.作业批改及证书发放. 程序设计是一门基础课程.对于计算机相关专业而言,程序设计是专业基础知识,是进一步学习其他专业知识的第一步阶梯:对于非计算机专业而言,程序设计的学习 ...

  6. 最新《网易云课堂Java入门课程》

    课程概述 本课程不提供教学服务.作业批改及证书发放. 程序设计是一门基础课程.对于计算机相关专业而言,程序设计是专业基础知识,是进一步学习其他专业知识的第一步阶梯:对于非计算机专业而言,程序设计的学习 ...

  7. 从入门到精通的Java进阶学习笔记整理,不愧是大佬

    前言 一位小伙伴准备了许久的阿里Java面试,原以为能够顺利拿下offer,但在第三面还是被摁在地上反复摩擦,丧气一段时间后,小伙伴调整了心态重新尝试了一下,最终拿下了offer,今天小编把这位小伙伴 ...

  8. 网易云课堂Java应用基础:入门篇

    第一章:用Eclipse来做计算 1.1第一个Java程序 1.2.1读输入 1.2.2变量 1.2.3赋值 1.3表达式 1.3.1浮点数 1.3.2运算符优先级 1.3.3类型转换 第一章编程题 ...

  9. [Java进阶]学习笔记2:毫秒值的概念和作用

    1.Date类 类 Date 表示特定的瞬间,精确到毫秒. 毫秒:千分之一秒 作用:可以对时间和日期进行计算 可一把日期转换为毫秒进行计算,计算完毕,再转换为日期. 把日期转换为毫秒: 当前的日期:2 ...

最新文章

  1. [转] 理解RESTful架构
  2. Matlab与线性代数 -- 矩阵的复制
  3. 学习日志---哈夫曼树相关算法
  4. 北京年会和关于数据仓库板块的思考
  5. PLSQL 的简单命令之四
  6. Python 动态添加类方法
  7. linux中ls文件内存大小,Linux下用ls和du命令查看文件以及文件夹大小
  8. TiDB 在 Ping++ 金融聚合支付业务中的实践
  9. 磁盘读写流程和网络读写流程
  10. HtmlDom 基础
  11. python一个星期可以入门吗_Python一星期入门第6篇: 模块和包
  12. linux关闭自动更新,Ubuntu开启系统自动升级与取消自动更新的方法,
  13. CFA在线计算机,注意!CFA考场上只能携带这种计算机!
  14. UITextView的使用详解
  15. 数学建模:排队论模型
  16. log4j 日志输出级别
  17. 各种把妹法——太强大了!
  18. 自定义关机计算机,win7自定义定时关机设置方法是什么
  19. linux下使用top和pmap命令查看系统运行状态和进程运行状态
  20. ISP模块之色彩增强算法--HSV空间Saturation通道调整

热门文章

  1. 复盘小米魅族大战,1499 红米是假,小米4 降价是真
  2. 2022 年,写给自己
  3. EF 后台登录+首页+忘记密码 列表
  4. Android mob集成 微信分享失败
  5. 68-C语言-打鱼晒网问题
  6. JavaWeb 项目 --- 表白墙 和 在线相册
  7. 数值计算方法第四章—插值法
  8. (转)Qt+Halcon联合开发配置
  9. 从数据中台到AI中台:一种敏捷的智能业务支持方案( 附视频讲解) | 技术头条...
  10. windbg命令手册