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. 【技术引擎——汇聚IT思想之间的碰撞】

    转载请注明作者和出处:http://blog.csdn.net/pearyangyang/article/details/40869825    谢谢. 这篇博客将记录我所学习的那些博客大牛,方面以后 ...

  2. MongoDB(三)mongoDB下载和安装

    软件下载 下载mongodb最新的包:http://www.mongodb.org/downloads 下载mongodb可视化界面,mongoVUE:http://download.csdn.net ...

  3. HTML5API___Web Storage

    Web Storage 是html5的本地存储规范 支持:移动平台基本支持 (opera mini除外) ie8+ff chrome 等 支持 它包含2个: sessionStorage 会话存储   ...

  4. 在unity中用鼠标实现在场景中拖动物体,用鼠标滚轮实现缩放

    在场景中添加一个Plan,Camera,Directional Light,Cube.添加两个脚本scrollerScirpt(挂在Camera),CubeDragScript(挂在Cube上). 1 ...

  5. Spring—Hibernate

    1.家jar包 2配置applicationContext与xxx.hbm.xml(根据需要决定是否配置hibernate.hbm.xml) applicationContext.xml <?x ...

  6. linux中的fork()函数以及标准I/O缓冲

    1. fork()创建的新进程成为子进程.一次调用,两次返回,子进程的返回值是0,而父进程的返回值是新子进程的进程ID,如果出现错误,fork返回一个负值. 2. 可以通过fork返回的值来判断当前进 ...

  7. 重定向输入输出流--freopen

    freopen是被包含于C标准库头文件<stdio.h>中的一个函数,用于重定向输入输出流.该函数可以在不改变代码原貌的情况下改变输入输出环境. C99函数声明: FILE *freope ...

  8. LATEX使用之字体颜色深浅不一

    今天用Ctex写论文,发现出来的pdf在屏幕上会出现字体颜色深浅不一的现象. google一下之后,在饮水思源bbs上找到了解决方法,用latex+dvitopdf来编译就不会有这个现象了. 另外,对 ...

  9. 指针和引用区别 C++

    #include <iostream> using namespace std; int main(){ ; void cubeByPoint(int *);//指针传参声明 void c ...

  10. Python的安装和详细配置(转)

    Python是一种面向对象.解释型计算机程序设计语言.被认为是比较好的胶水语言.至于其他的,你可以去百度一下.本文仅介绍python的安装和配置,供刚入门的朋友快速搭建自己的学习和开发环境.本人欢迎大 ...