NIIT第二十一天

上午

集合

1. 集合Collection存储数据的形式是单个存储的,而Map存储是按照键值对来存储的,键值对:即键+值同时存储的,类似align="center",align是键,center是值

ArrayList

1.   ArrayList类型的集合,在查询效率上非常的高,但是对于对数据的增删改,则效率很低

2.在使用集合存储数据时,在一个集合中应该尽量的存储相同数据类型的数据,这样可以在对数据进行查询时,提高查询效率

闲谈

1.只要对象继承自Iterable接口,则该对象就可以进行迭代,迭代即:对序列进行遍历并选择序列中的对象【引文

2.在传入方法的参数是对象时,Object类型参数可能更灵活,但是Object参数无法访问到特定子类的特有方法或属性,因为父类时“看不到”子类中独有的方法或属性,而类在实现接口时,必定会实现接口中的方法,虽然接口也不能访问到实现类的独有的方法,但是接口中定义的所有抽象方法,实现类中必定会对其进行“重写”,因此传递到方法的参数是接口类型必定是实现类中具体实现的方法,而继承,子类不一定会重写父类的方法,因此,实际访问的就可能会是父类中的方法,所以,在灵活性等方面,接口参数的使用会优于父类Object参数类型,最起码,传入接口类型的参数是有目的的,而且,一定可以访问到实现类的方法,因为实现类需要对接口中所有的方法进行“重写”

3.泛型数据类型,在集合声明时的应用,避免了在想集合中存储数据时,传入其他类型的数据

4.关于变量声明时,数据类型的选择:

(1)如果不需要限制变量的类型,并且不会当做参数传入方法中进行使用,可以写成具体的某种数据类型,如:集合ArrayList

(2)如果该变量可能会传入方法进行使用,并且希望传入方法的参数更具灵活性,这时可以将变量的类型声明为【接口】的类型,这样只要是实现了该接口的实现类,都可以传入方法进行使用,并且所有抽象方法都已经被实现,如:集合可以写成List,在参数的具体类型方面就有可能是:ArrayList或LinkedList

(3)在jdk的系统类中,大部分的实现类,都并没有多么的扩充接口中的方法数量,就是说,接口中的方法实现类都实现了,而实现类中并没有多少多余的特有的方法,因此方法的参数写成接口类型,可能更具灵活性

下午

ArrayList

1.集合中如果存储的是对象数据类型,在进行对其元素进行比较时,有必要对equals()方法进行重写【示例代码

2.集合ArrayList石非线程安全,但是执行的效率高,Vector是线程安全;线程安全:即:某一时刻有且只能有一个线程能够写Vector,即加锁,避免多线程同时写数据引起不一致性,为此也会消耗很多资源【引文

LinkedList

1.集合LinkedList对于数据的增删改,效率非常高,而查询的效率则很低,因为LinkedList对是以“链表”的形式存储数据的,因此,在增删改操作时,不需要大规模的变动的其他数据,只需要修改上下节点的指向就可以了

2.在对LinkedList集合的数据进行操作时,尽量的选用**first**或**last**的操作方法,执行的效率会更高

3.Collections对集合进行操作时,synchronizedList方法的使用,对数据进行包装,以防止数据被非线程安全访问

Set

1.集合Set存储的数据是无序,并且所有存储的元素都不会重复,如果发现重复数据的写入,则会覆盖之前相同的数据

2.如果HashSet集合中存储的是对象,则对数据进行写入到集合时,要避免java系统错误的把“相同”的数据写入,则有必要重写hashCode方法和equals方法【示例代码

Map

1.HashMap存储的数据时,键值对的形式存储的

晚上

笔记

1.在对集合中的数据进行查询操作时,建议选用ArrayList类型的集合,查询效率非常高

2.在对集合中的数据进行增删改操作时,建议用LinkedList类型的集合,对于数据的更改效率非常高

3.如果对象继承Iterable接口,则该对象可进行迭代操作,即集合遍历并选择序列中的对象

4.在声明集合类型数据时,尽量加上泛型,即<E>,可以防止不同类型的数据的写入

5.在对集合中的对象类型的数据进行比较或插入(避免重复对象)时,有必要重写equals()方法,

6.   ArrayList集合石非线程安全,但是操作效率高,而Vector集合则是线程安全,即同一时刻,有且只能有一个线程能操作数据;对ArrayList非线程安全数据操作时,可以使用Collections中的synchronizedList进行转换成线程安全,再进行操作

7. LinkedList集合在操作数据时,建议使用**first**或**last**放法对数据进行操作,利于链表结构的数据操作

9.Set集合中的元素不允许存在相同的元素(当然存储之前可能需要重写equals方法,待验证),因此可以利用此集合对“数据库”中的数据进行整理归类,在向set集合中写入数据时,有必要重写原来的hashCode方法和equals方法,来避免相同的对象被错误的写入

10.HashMap集合存储的是键值对类型的元素数据

11.对于方法参数的声明上,尽量的选用接口数据类型,可能会更具灵活性;相比于传入父类的数据类型,接口类型会更具针对性和灵活性

IT第二十一天 - Collections、ArrayList集合、LinkedList集合、Set集合、HashMap集合、集合的操作注意【修20130828】的更多相关文章

  1. Arraylist 和 linkedlist || hashset 和treeset. || hashMap 和 TreeMap

    参考:http://liuyuan418921673.iteye.com/blog/2256120 1. ArrayList和LinkedList的区别和使用场景   ArryList 与linked ...

  2. ArrayList和LinkedList有什么区别?

    ---恢复内容开始--- ArrayList和LinkedList都实现了List接口,但是: ArrayList是基于索引的数据接口,底层是数组,能够以O(1)时间复杂度随机访问元素.而Linked ...

  3. 从上面的集合框架图可以看到,Java 集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射

    从上面的集合框架图可以看到,Java 集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射.Collection 接口又有 3 ...

  4. 数组Array和列表集合ArrayList、LinkedList和Vector的区别

    一.ArrayList和Vector的区别 ArrayList与Vector主要从以下方面来说. 1.同步性: Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同 ...

  5. HashMap,Hashset,ArrayList以及LinkedList集合的区别,以及各自的用法

    基础内容 容器就是一种装其他各种对象的器皿.java.util包 容器:Set, List, Map ,数组.只有这四种容器. Collection(集合) 一个一个往里装,Map 一对一对往里装. ...

  6. Java集合源代码剖析(一)【集合框架概述、ArrayList、LinkedList、Vector】

    Java集合框架概述 Java集合工具包位于Java.util包下.包括了非常多经常使用的数据结构,如数组.链表.栈.队列.集合.哈希表等.学习Java集合框架下大致能够分为例如以下五个部分:List ...

  7. Java集合系列(二):ArrayList、LinkedList、Vector的使用方法及区别

    本篇博客主要讲解List接口的三个实现类ArrayList.LinkedList.Vector的使用方法以及三者之间的区别. 1. ArrayList使用 ArrayList是List接口最常用的实现 ...

  8. java集合【12】——— ArrayList,LinkedList,Vector的相同点与区别是什么?

    目录 特性列举 底层存储结构不同 线程安全性不同 默认的大小不同 扩容机制 迭代器 增删改查的效率 总结一下 要想回答这个问题,可以先把各种都讲特性,然后再从底层存储结构,线程安全,默认大小,扩容机制 ...

  9. 集合中list、ArrayList、LinkedList、Vector的区别、Collection接口的共性方法以及数据结构的总结

    List (链表|线性表) 特点: 接口,可存放重复元素,元素存取是有序的,允许在指定位置插入元素,并通过索引来访问元素 1.创建一个用指定可视行数初始化的新滚动列表.默认情况下,不允许进行多项选择. ...

随机推荐

  1. flume 自己定义 hbase sink 类

    參考(向原作者致敬) http://ydt619.blog.51cto.com/316163/1230586 https://blogs.apache.org/flume/entry/streamin ...

  2. java中File类详解

    构造函数 代码如下: public class FileDemo {     public static void main(String[] args){         //构造函数File(St ...

  3. Nhibernate初入门基本配置(一)

    文章出处:http://www.cnblogs.com/GoodHelper/archive/2011/02/14/nhiberante_01.html 一.NHibernate简介 什么是?NHib ...

  4. 使用 system.io.filesysteminfo 来查找文件。

    如何快速搜索你想找到文件呢.大家知道Windows系统自带了搜索,很方便,下面介绍自己编写的也可以达到同样的效果.注意.有些文件的访问需要更高的权限.这里暂且去掉那些文件目录的搜索.不然会出现erro ...

  5. Jquery filter()方法简介

    利用filter函数可以从wrapper set中过滤符合条件的dom元素. 如下图html代码,假如我们要获取类名为filter的<a>标签,用filter方法可以很轻松的获得. < ...

  6. ASP.NET MVC导入excel到数据库

    MVC导入excel和webform其实没多大区别,以下为代码: 视图StationImport.cshtml的代码: @{ ViewBag.Title = "StationImport&q ...

  7. Linux Shell 学习笔记 一 目录结构

    以Red Hat Enterprise Linux 各版本为例,RHEL中目录具体作用如下, /bin       存放普通用户使用的命令 /sbin     存放管理员可以执行的命令 /home   ...

  8. JavaSE_ 面向对象 总目录(7~10)

    JavaSE学习总结第07天_面向对象2 07.01 成员变量和局部变量的区别07.02 方法的形式参数是类名的调用07.03 匿名对象的概述和应用07.04 封装的概述07.05 封装的好处和设计原 ...

  9. Problem E: Automatic Editing

    Problem E: Automatic EditingTime Limit: 1 Sec Memory Limit: 128 MBSubmit: 3 Solved: 3[Submit][Status ...

  10. java 显示视频时间--玩的

    1.显示视频时间 package view.time; import it.sauronsoftware.jave.Encoder; import it.sauronsoftware.jave.Mul ...