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. linux线程间同步方式汇总

    抽空做了下linux所有线程间同步方式的汇总(原生的),包含以下几个: 1, mutex 2, condition variable 3, reader-writer lock 4, spin loc ...

  2. linux下emacs安装

    1.下载地址:http://ftp.gnu.org/pub/gnu/emacs/ 下载文件:emacs-24.2.tar.gz 步骤: 一.安装依赖文件:  (先进入root:终端中输入 su -) ...

  3. xcode UIView常用方法属性动画

    常见属性: @property(nonatomic,readonly) UIView *superview; 获得自己的父控件对象 @property(nonatomic,readonly,copy) ...

  4. list-style:none outside none;的作用

    今天在论坛里面看到一篇文章,讲的是以前忽略的一个问题.就是当ul里面有float和display:inline,在ie6.ie7里面会有一些问题.一般对ul进行reset也好,或是设置ul的样式时,往 ...

  5. POJ 1850 Code(找规律)

    Code Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 7913   Accepted: 3709 Description ...

  6. django-rest-framework 快速开始

    搭建项目 # Set up a new project django-admin.py startproject tutorial cd tutorial # Create a virtualenv ...

  7. 一道试题引发的血案 int *ptr2=(int *)((int)a+1);

    某日,看到一道比较恶心的C语言的试题,考了很多比较绕的知识点,嘴脸如下: int main(void) { int a[4] = {1, 2, 3, 4}; int *ptr1=(int *)(&am ...

  8. BZOJ 4010: [HNOI2015]菜肴制作( 贪心 )

    把图反向,然后按拓扑序贪心地从大到小选, 最后输出.set比priority_queue慢... --------------------------------------------------- ...

  9. Ajax学习之小结

    ajax: * 同步交互和异步交互:  * 同步交互:客户端发送请求——>等待服务器端处理——>接收响应,这个过程客户端不能做任何其他事情,这种模式叫做同步交互  * 异步交互:客户端发送 ...

  10. [LeetCode]题解(python):076-Minimum Window Substring

    题目来源: https://leetcode.com/problems/minimum-window-substring/ 题意分析: 给定两个字符串S和T.在S中找到最短的一个子字符串使得他包括所有 ...