【java】兴唐第二十一节(LinkedList和泛型)
LinkedList知识点
1、实现了Iterable接口的类具有迭代功能。
2、List接口为Collection的子类,表示线形数据列表,其实现类有:ArrayList(数组线性表)与LinkedList(链表)
算了不多说了,上图吧
3、ArrayList是一个可变数组(当存储数据长度大于当前数组长度时,会重新声明一个数组,将原来的数据拷贝过来。)
4、LinkedList的第一个元素的Pre值一定为nell ,可以用来判断是不是第一个元素
5、ArrayList元素地址是连续的,LinkedList的地址不连续。
6、ArrayList是数组的线性的数据结构,使用连续的内存单元存储数据元素,对元素的遍历速度比较快LinkedList在遍历集合元素方面比较慢,因为需要寻找下一个元素的地址。
LinkedList是双向链表数据结构,前一个元素储存了后一个元素的地址,后一个元素记录了前一个元素的地址。当添加过删除元素时比较快。因为ArrayList需要移动删除或添加元素后的所有元素。
7、留下的疑问:什么是线程安全?等到讲完多线程后再来做补充,使用多线程的目的是为了使程序跑的更快一点
7、Linkedlist删除元素时直接将要删除元素的前一个元素的next指向要删除元素后一个元的pre即可。
8、向指定位置添加元素
代码实现
stus.add(1, "孙悟空");
9、迭代器的使用
(1)如果只是打印的话则不需要将数据转为字符串的形式
代码实现:
Iterator iter = stus.iterator();while(iter.hasNext()) {System.out.println("====>" + iter);}
(2)如果想对数据进行处理,则需要将数据转化为String类型,有两种方法
方法一:
代码实现:
Iterator iter = stus.iterator();while(iter.hasNext()) {String n = (String) iter.next();System.out.println("=====>" + n); }
方法二:
代码实现:
Iterator iter = stus.iterator();while(iter.hasNext()) {String n = iter.next() + "";System.out.println("====>" + n);}
注:任何的对象和字符串拼接都会变成字符串
10、LinkedList新增的方法
LinkedList除了实现List提供的抽象方法外,还增加了一些方法:
- void addFirst(Object o) 将指定数据元素插入此集合的开头,原来元素(如果有)后移;
- void addLast(Object o) 将指定数据元素插入此集合的结尾
- Object getFirst() 返回此集合的第一个数据元素
- Object getLast() 返回此集合的最后一个数据元素
- Object removeFirst() 移除并返回集合表的第一个数据元素
- Object removeLast() 移除并返回集合表的最后一个数据元素
新增的六个方法都要记住
泛型
1、实例化对象时的用法
代码实现:
List<Student> list = new ArrayList<Student>();
2、引用类型
例:
list.add(stu);
stu.setStuNo("2019");
list.add(stu);
由于add的两个stu地址相同,所以打印时输出的内容是一样的。
LinkedList的源码分析
1、
public class ArrayList<E>
E指的是元素,表示ArrayList盛放元素的类型
2、最后一个元素如果为null则说明该集合是空的。
小作业:将LinkFirst和LinkList自己写一下
ArrayList的源码分析
1、其中有一个有参的构造方法
public ArrayList(int initialCapacity)
很重要!因为它可以在实例化ArrayList时指定默认的长度。(无参的构造方法初始化一个长度为10的数组(默认值为10)数组)
避免一些不必要的空间扩容和元素复制。
public ArrayList(Collection<? extends E> c)
2、以上代码 中?部分表示的是表示的输入的类型必须为ArrrayList的类或其子类,作用是将集合中的元素添加到新new的ArrayList当中。
3、疑问:这一步干什么用的?
if (elementData.getClass() != Object[].class)
相关文章:

Elgg网站迁移指南
转载地址: http://blog.sina.com.cn/s/blog_84068de60100vr21.html Elgg官方文档上的网站迁移部分是有问题的——缺少了一些重要步骤,而且过程更麻烦。正确的方法如下: 备份网站文件,包括uploads文件夹导出数据库在数据库文件中&a…

INFO:在InstallShield中修改安装包压缩.cab包的大小
如果我们用InstallShield打包一个数据非常大的安装包(Basic MSI和InstallScript MSI工程类型),默认情况下安装包会产生多个.cab文件,这里简单说明我们如何修改安装包中.cab文件的大小。首先,有个信息大家需要知道&…

MEF依赖注入实例
什么是MEF 先来看msdn上面的解释:MEF(Managed Extensibility Framework)是一个用于创建可扩展的轻型应用程序的库。 应用程序开发人员可利用该库发现并使用扩展,而无需进行配置。 扩展开发人员还可以利用该库轻松地封装代码,避免生成脆弱的硬…

Data - 数据思维 - 上篇
1 - 概念与定义 如果分析思维是一种结构化思考的体现,那么数据分析思维(简称数据思维)则是以数据为依托的结构化分析方式。 不同于“我觉得”、“以前是怎样”、“其他人如何”这些直觉化、经验化、类比化的思考方式,数据思维是以…

新生选课系统使用指南
建议选用IE6或者IE7浏览器。 打开浏览器,地址栏输入202.200.112.200, 或者202.200.112.202, 或者202.200.112.210。按回车键。 输入学号和身份证号(如果修改过密码,则输入新密码)。点“登录”。 点 “学生…

【java】兴唐第二十三节课(暑期第一节TreeSet)
预警:进入暑期培训的博主即将高产似母猪,敬请博友期待。 1、给类添加构造方法 alt shift s 选择Generate Construct using Fields 2、map两种遍历方法 方法一: 获取所有的key值,根据key值获取value值 代码实现: Se…

程序设计分析(开篇)——混沌初开,顿悟设计
一直以来,不断的进行着项目的设计、开发,然而,差的设计,痛苦的维护、编码,让我不断的审视自己的设计是否有问题,在最近的一些思考、理解中,终于有了一些领悟,总结一下过去的设计&…

源代码管理工具调查
任务说明: 一、找出并了解当前较为流行的几种源代码管理工具(至少三种); 1、 Visual Source Safe( 简称 VSS )2、 SVN(Subversion) - CVS(Concurrent Version System)的替代和升级版本3、 ClearCase 二、建立表格对这些源代码管理…

从零开始学Go之接口(一):接口
接口是双方约定的一种合作协议。接口实现者不需要关心接口会被怎样使用,调用者也不需要关心接口的实现细节。 接口是一种类型,也是一种抽象结构,不会暴露所含数据的格式、类型及结构。 声明: 接口类型是由一组方法签名定义的集合 …

【java】兴唐第二十四节课
HashMap中put函数的源码分析: (一)知识点: 1、方法resize()的作用是扩容 2、 if ((p tab[i (n - 1) & hash]) null)其中n-1代表最后一个元素的下标,经过和hash的&后获取当前存储nod…

找不到可安装的ISAM”的问题
问题描述: 在 Access 或Sql Server中收到“Could not find installable ISAM”(找不到可安装的 ISAM)错误信息或者丢失某些文件类 解决方法: 1.注册表编辑器使用不当可能导致严重问题,可能需要重新安装操作系统。Micro…

修改mysql的时间/时区
# 背景 往db中insert数据发现时间不对,因为是新DB,所以猜测是mysql设置不对 # 解决方法 方法一:通过mysql命令行模式下动态修改 show variables like "%time_zone%"; 查看时区 --------------------------| Variable_name | Value…

【java】兴唐第二十五节课(异常和log4j的使用)
异常 1、try catch finally语法(附带多重catch) 代码实现: public static void main(String[] args) {try {int i 1/0;}catch(ArithmeticException e){System.out.println("出现数学运算异常:" e);}catch(ArrayIndex…

CentOS 命令提示符颜色及样式详解
命令提示符:prompt CentOS下查看当前命令提示符格式: 1 [rootlocalhost ~]# echo $PS1 #显示当前使用的PS1样式 2 [\u\h \W]\$ 命令提示符参数如下: \d :#代表日期,格式为weekday month date,例如&#…

Max_user_connections 与Max_connections 与max_connect_errors
对于连接数的设置,show variables里有三个参数可以对它进行控制,max_connections与max_user_connections以及max_connect_errors。下面对这三个参数相关描述。 max_connections:针对所有的账号所有的客户端并行连接到MYSQL服务的最大并行连接…

压力变动力,存储追求高效率
企业的数据存储量每年都要大幅增长,但是IT预算呈现紧缩趋势。这就是企业面临的最大存储难题,即如何平衡数据增长与提高存储利用率和降低成本之间的关系。 非结构化数据带来的难题 存储最直接的压力来自于不断增长的数据量。今天,我们面对的是…

Hadoop学习之路(三)Hadoop-2.7.5在CentOS-6.7上的编译
下载Hadoop源码 1、登录官网 2、确定你要安装的软件的版本 一个选取原则: 不新不旧的稳定版本 几个标准: 1)一般来说,刚刚发布的大版本都是有很多问题 2)应该选择某个大版本中的最后一个小版本 阅读编译文档 1、准备一…

static String valueOf(XXX xxx)
1 package day01;2 /**3 * static String valueOf(XXX xxx)4 * 字符串提供了一组静态的重载的valueOf方法,作用5 * 是将其他类型转换为字符串6 * author ta7 *8 */9 public class Demo10 { 10 public static void main(String[] args) { 11 int a 123; 12 …

【java】兴唐第二十五节课小程序学生卡转账小系统(自己写的异常)
1、StuCard.java public class StuCard {public static void TransMoney(int source, int money, int target) {money - target;if(money < 0) {throw new NotEnoughMoneyException("余额不足");}System.out.println("商家的余额为:" sour…

【JQUBAR1.1】jQuery 插件发布
【JQUBAR1.1】jQuery 插件发布 JQUBAR1.1 简介 2010-11-22在博客园发布了柱状图JQUBar1.0 jQuery 插件。现将该插件升级为1.1版本。 1.1版本修复了部分bug,同时新增以下功能: 1.可自定义坐标颜色 2.可自定义X,Y轴坐标名称 3.Y轴动态坐标自动建立 4.Y…

ssh远程操作服务器
登录方式 ssh account192.168.xxx.xxx 输入密码 远程上传下载文件 上传: scp filepath acount192.168.xxx.xxx:path filepath为要上传的文件路径path为上传到服务器的储存路径 下载: scp acount192.168.xxx.xxx:filepath path filepath为要下载的文件路径…

【java】兴唐第二十三节课作业
已知如下: 下表为某班级四次考试成绩单, 要求使用HashMap<String, Integer>存储每次考试的成绩(key键为姓名,value为成绩)。要求使用LinkedList存储考试次数,有几次考试就有几个HashMap注意…

Data - 数据思维 - 中篇
6 - 模型与框架 利用现有的成熟的理论、模型与框架,结合实际业务情况,搭建分析框架,尽量确保数据分析维度的完整性,结果的有效性及正确性。 营销理论模型:4P、用户使用行为、STP理论、SWOT等。管理理论模型:…

快速设置戴尔latitude笔记本的触摸板和指点杆
// TouchPadSettings.cpp : Defines the entry point for the console application.// by windviki 2010/08/31// 转载请注明出处。//// 办公用的戴尔笔记本除了触摸板,还在键盘中间有一个指点杆(point stick)// 打字很不习惯,经常…

Ubuntu 10.10系统安装手记
原来一直在公司用Ubuntu,感觉做开发是相当不错的,特别那种各种利用命令的方式真是太高效了。所以现在想把笔记本也装上,弄了半天,也遇到不少问题,记下来备忘一下。 虚拟机还是双系统 磁盘里面好多东西,基本…

php值传参,引用传参以及对象传参
传值:是把实参的值赋值给行参 ,那么对行参的修改,不会影响实参的值传引用 :真正的以地址的方式传递参数传递以后,行参和实参都是同一个对象,只是他们名字不同而已对行参的修改将影响实参的值说明࿱…

用一行代码高效的求一个列表的平方和
最近看到一个笔试题,考察的都是 Python 中的高阶函数 题目如下:用一行代码高效的求一个列表的平方和(不能用 sum 函数) 分析 1.先将列表中每个值作平方: 立即想到 map 函数,假设列表是 range(10),那么这个列表中平方是…

【java】第二十二节课(HashSet)
1、使用HashSet建立对象、添加元素并使用两种方法遍历 代码实现 public class SetDemo {public static void main(String[] args) {Set<String> set new HashSet();set.add("猴子");set.add("八戒");set.add("唐僧");set.add("沙僧…

转:在 .NET 中实现异步回调访问数据库
在 .NET 中实现异步回调访问数据库 时间:2009-11-17 19:52来源:网络收集 作者:佚名 点击: 334 次 技术论坛某些场合下,在对数据库进行访问时,为了避免同步访问数据时所带来的延迟,我们需要改进设计,以提高程序执行效率。一方面&am…

《资安人》:迈向成功SOC之路
近日,台湾的《资安人》上发表了一篇文章——《迈向成功的SOC之路》,现转载至此,以飨读者。【作者:王榮信 -11/08/2010】在現代虛擬世界中,造成資訊安全事件的來源為病毒、蠕蟲或木馬,不變的安全事件來源就是…