1.学习集合的原因?

A.数组是面向过程的,集合是面向对象的。

B。集合是类,具备类的封装,继承,多态。。。超强功能。

C。数组是固定长度,集合是可变长度

D。数组没办法获得真实的元素个数;集合可以。

E。数组只有一种固定的存值方法(顺序结构存值);集合具有多种方式,适合于多种场合。

2.集合的家庭成员:

(第一块:)
               Collection  【无序,不唯一】      Map【key  , value】
          【无序,唯一】【无序,不唯一】

list 【有序,不唯一】                        set【无序,唯一】

ArrayList     LinkedList    Vector              HashSet     TreeSet  HashMap
   |     |         |           |     |
【顺序存储】 【链表存储】         【hash表】  【二叉树】      【哈希表+键值对】

3.介绍ArrayList:

存值方式: 顺序结构存储。

使用场合: 遍历和随机访问。

常用方法:

增加:add();addAll(Collection);
    
      删除:remove(Object或者下标);removeAll(Collection);

查找:contains(Object);containsAll(Collection);size();get(下标);

迭代:Iterater:

使用:
  Iterator iter =list.iterator();
  while(iter.hasNext()){
   System.out.println(iter.next());
  }

4.介绍Vector 和 ArrayList的区别:(了解)

1.相同点:原理相同,底层代码相同,方法相同

2.不同:Vector  线程安全的;每次增长1倍;老版本jdk提供操作集合的接口

ArrayList 效率高,线程不安全;每次增长0.5倍;ArrayList是新版本提供集合的接口。

5.介绍LinkedList:

存值方式:链表结构

使用场合:删除和修改

方法:

增加:add();addAll();addFirst();addLast();
    
      删除:remove();clear();removeAll();
            removeFirst();removeLast()

查找:contains("北京");containsAll(list1);size();get();
            getFirst();getLast();

迭代:Iterater:   
        
  对比LinkedList 和ArrayList的区别:

1.存值方式不一样:顺序结构,链表结构

2.使用场合不一样:遍历和随机访问;删除和修改

6. 介绍泛型:

学习泛型的原因?
    
       保证集合在【编译期】存值时没问题;那么运行期取值也没问题。

作用: 在【编译期】,控制接收元素的类型。
      
    泛型用在集合:

LinkedList<Integer> link = new LinkedList<Integer>();

link.addFirst(567);
          link.add(12);
          link.add(111);
   System.out.println(link);
   
 Iterator<Integer> list=link.iterator();
 while(list.hasNext()){
  Integer i=list.next();
  System.out.println(i+1);
 }

7.集合的第二块:

Map  (键 值对,key无序唯一;value 无序 不唯一)

HashMap      TreeMAP       HashTAble

(7.1)介绍:HashMap

存值方式: hash表存储键值对。

HashMap  vs  Hashtable (了解)

1. Hashtable 老jdk版本;HashMap  新版本

2. Hashtable 线程安全; HashMap  效率高,线程不安全。

3. HashMap  实现Map接口 ;Hashtable 继承 Dictionary。
       
 4.hashMap允许空值,hashtable不允许空值

相同:原理,算法,存值方式相同。

方法:

增加: put(011, "北京");putAll(map1);

删除:remove(key); ---根据key ,去删除 value

查询:get(key)--根据key ,去删除 value。
      keySet()---返回键的集合
      values()---返回值的集合
      containsKey(key)---如果存在由指定的键映射的“键-值对”,返回true

java面向对象中的集合的更多相关文章

  1. 第35节:Java面向对象中的多线程

    Java面向对象中的多线程 多线程 在Java面向对象中的多线程中,要理解多线程的知识点,首先要掌握什么是进程,什么是线程?为什么有多线程呢?多线程存在的意义有什么什么呢?线程的创建方式又有哪些?以及 ...

  2. java多线程中并发集合和同步集合有哪些?区别是什么?

    java多线程中并发集合和同步集合有哪些? hashmap 是非同步的,故在多线程中是线程不安全的,不过也可以使用 同步类来进行包装: 包装类Collections.synchronizedMap() ...

  3. Java 8中处理集合的优雅姿势——Stream

    在Java中,集合和数组是我们经常会用到的数据结构,需要经常对他们做增.删.改.查.聚合.统计.过滤等操作.相比之下,关系型数据库中也同样有这些操作,但是在Java 8之前,集合和数组的处理并不是很便 ...

  4. java面向对象中四种权限(private,protected,public,友好型)详解

    转自http://blog.csdn.net/a1237871112/article/details/50926975 及http://blog.csdn.net/blackmanren/articl ...

  5. JAVA 面向对象中的多态

    多态是继封装.继承之后,面向对象的第三大特性. 现实事物经常会体现出多种形态,如学生,学生是人的一种,则一个具体的同学张三既是学生也是人,即出现两种形态. Java作为面向对象的语言,同样可以描述一个 ...

  6. java方法中Collection集合的基本使用与方法

    集合类的由来,对象用于封闭特有数据,对象多了需要存储,如果对象的个数不确定就使用集合容器进行存储. 集合特点:1.用于存储对象的容器.2.集合的长度是可变的.3.集合中不可以存储基本数据类型值. 集合 ...

  7. 第33节:Java面向对象中的异常

    Java中的异常和错误 Java中的异常机制,更好地提升程序的健壮性 throwable为顶级,Error和Exception Error:虚拟机错误,内存溢出,线程死锁 Exception:Runt ...

  8. Java开发中各种集合框架简介

    在大数据MapReduce作业开发中,我们经常会遇到一些大小表的join,这是如果这个小表足够“小”的话,我们可以使用进行“map-join-side”,这要就可以有效的降低reduce端的压力,但是 ...

  9. Java面向对象中this关键字详解 意义+实例讲解【hot】

    this关键字 >>>便于理解简单的定义 this关键字可以简单的理解为,谁调用this所在的方法,this就是谁. 类的构造函数与getter.setter方法常用到this关键字 ...

随机推荐

  1. oracle group by 显示其他字段

    原先用 select key,max(value) from tbl group by key 查询出的结果,但是我要再多加一个TEST字段 根据网友的语句结合起来,以下是可以显示其他字段,并且考虑排 ...

  2. python异步IO编程(一)

    python异步IO编程(一) 基础概念 协程:python  generator与coroutine 异步IO (async IO):一种由多种语言实现的与语言无关的范例(或模型). asyncio ...

  3. 嵊州D3T2 福尔贝斯太太的快乐夏日 summer

    宗教,或是无节制的自由主义,是致人腐化的毒剂. 现在,一个人要经历 n 个事件,编号为 1 ∼ n. 经历 x 号事件,他的危险值就会增加 x. 一开始他的危险值是 0. 当一个人的危险值大于 0 且 ...

  4. mimalloc剖析

    mimalloc是微软最近开源的一个malloc实现,其实验数据表明相比于jemalloc.tcmalloc等实现大约快了10%.其通过将空闲块列表(Free List)进行分片(Sharding)来 ...

  5. android_layout_linearlayout(二)

    android的线性布局linearlayout的研究没有尽头.看了官网关于线性布局的一个例子,捣鼓一阵,发现的迷惑记录在此. 一.先看看官网xml <?xml version="1. ...

  6. Java编程思想:标准I/O

    import com.sun.xml.internal.ws.policy.privateutil.PolicyUtils; import java.io.*; public class Test { ...

  7. HDU5521 Meeting(dijkstra+巧妙建图)

    HDU5521 Meeting 题意: 给你n个点,它们组成了m个团,第i个团内有si个点,且每个团内的点互相之间距离为ti,问如果同时从点1和点n出发,最短耗时多少相遇 很明显题目给出的是个无负环的 ...

  8. Spring Aware 到底是什么?

    通过如下前序两篇文章: Spring Bean 生命周期之"我从哪里来"? Spring Bean 生命周期之"我要到哪里去"? 我们了解了 Spring Be ...

  9. TF项目实战(SSD目标检测)-VOC2007

    TF项目实战(SSD目标检测)-VOC2007 训练好的模型和代码会公布在网上: 步骤: 1.代码地址:https://github.com/balancap/SSD-Tensorflow 2.解压s ...

  10. Android 开发感想

    18年从.net转行做安卓开发,现在已经过去一年多了.说一下感想和心得体会! 一.开始 说一下我的经厉,从毕业开始出来工作一直是从事.net方向的开发工作.一开始也是没什么经验,加上也没有其他手艺就找 ...