网易云课堂Java进阶学习笔记系列01 -- 第3周 对象容器
个人为了复习一下Java基础, 在网易云课堂上报了翁恺老师的Java语言程序设计进阶篇的课程, 主要看了其中的3. 对象容器, 6. 设计原则, 7. 抽象与接口, 8. 控制反转与MVC模式这几部分的内容.
同时也决定将这些内容都以博客的形式来复习和总结一下!
对象容器
- 顺序容器
- 对象数组
- 集合容器(Set)
- 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周 对象容器相关推荐
- 网易云课堂Java进阶学习笔记系列03 -- 第7周 抽象与接口
第七周 抽象与接口 在第一周就有一个Shape类的例子.这个类有很多的子类,每个子类也都实现了父类的方法.实际上父类Shape只是一个抽象的概念而并没有实际的意义. 举例案例理解 如果请你画一个圆,你 ...
- 网易云课堂web安全学习第七天——了解点击劫持
第一 什么是点击劫持 通过覆盖不可见的框架误导受害者点击而造成的攻击行为 特点:隐蔽性高 骗取用户操作 UI-覆盖攻击 利用iframe或者其他标签的属性 第二 他是如何实现的 & ...
- 史上最强Tomcat8性能优化,网易云课堂java高级架构师
点击"Server Status",输入用户名.密码进行登录,tomcat/tomcat 登录之后可以看到服务器状态等信息,主要包括服务器信息,JVM,ajp和http信息 AJP ...
- opencv进阶学习笔记12:轮廓发现和对象测量
基础版笔记目录: python3+opencv学习笔记汇总目录(适合基础入门学习) 进阶版笔记目录链接: python+opencv进阶版学习笔记目录(适合有一定基础) 轮廓发现 1轮廓发现介绍 基础 ...
- 网易云课堂Java入门视频课程
课程概述 本课程不提供教学服务.作业批改及证书发放. 程序设计是一门基础课程.对于计算机相关专业而言,程序设计是专业基础知识,是进一步学习其他专业知识的第一步阶梯:对于非计算机专业而言,程序设计的学习 ...
- 最新《网易云课堂Java入门课程》
课程概述 本课程不提供教学服务.作业批改及证书发放. 程序设计是一门基础课程.对于计算机相关专业而言,程序设计是专业基础知识,是进一步学习其他专业知识的第一步阶梯:对于非计算机专业而言,程序设计的学习 ...
- 从入门到精通的Java进阶学习笔记整理,不愧是大佬
前言 一位小伙伴准备了许久的阿里Java面试,原以为能够顺利拿下offer,但在第三面还是被摁在地上反复摩擦,丧气一段时间后,小伙伴调整了心态重新尝试了一下,最终拿下了offer,今天小编把这位小伙伴 ...
- 网易云课堂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类型转换 第一章编程题 ...
- [Java进阶]学习笔记2:毫秒值的概念和作用
1.Date类 类 Date 表示特定的瞬间,精确到毫秒. 毫秒:千分之一秒 作用:可以对时间和日期进行计算 可一把日期转换为毫秒进行计算,计算完毕,再转换为日期. 把日期转换为毫秒: 当前的日期:2 ...
最新文章
- [转] 理解RESTful架构
- Matlab与线性代数 -- 矩阵的复制
- 学习日志---哈夫曼树相关算法
- 北京年会和关于数据仓库板块的思考
- PLSQL 的简单命令之四
- Python 动态添加类方法
- linux中ls文件内存大小,Linux下用ls和du命令查看文件以及文件夹大小
- TiDB 在 Ping++ 金融聚合支付业务中的实践
- 磁盘读写流程和网络读写流程
- HtmlDom 基础
- python一个星期可以入门吗_Python一星期入门第6篇: 模块和包
- linux关闭自动更新,Ubuntu开启系统自动升级与取消自动更新的方法,
- CFA在线计算机,注意!CFA考场上只能携带这种计算机!
- UITextView的使用详解
- 数学建模:排队论模型
- log4j 日志输出级别
- 各种把妹法——太强大了!
- 自定义关机计算机,win7自定义定时关机设置方法是什么
- linux下使用top和pmap命令查看系统运行状态和进程运行状态
- ISP模块之色彩增强算法--HSV空间Saturation通道调整