`

java数组和容器(Collection)

    博客分类:
  • j2se
阅读更多

一,数组:(定义、分配空间、赋值)

一维数组的声明:type []  var 或者 type  var [];

java中试用new 创建数组对象格式为:数组名 = new 数组元素类型[数组元素个数];

注意理解基本数据类型数组和引用类型一维数组的内存分配差异。

数组的定义与初始化

 

1,数组动态初始化(数组的定义也就是数组的空间分配和数组元素的赋值分开进行):数组的定义与数组元素分配空间和赋值操作分开进行。

eg1: int a[];

      a = new int[3];

      a [0] = 1;    a [1] = 2;   a [2] = 3;

eg2  Date d [];

        d = new Date[2];

        d[0] = new Date(5,12,2008);      d[1] = new Date(3,22,2011);

 

2,数组静态初始化:定义数组的同时就为数组元素分配空间并赋值。

eg1:int a[] =  {1,2,3};   /    int[] a = {1,2,3};

eg2:  Date d[] = {new Date(8,8,2008),new Date(5,12,2008),new Date(3,22,2011),new Date(15,8,2011)};

 

数组元素默认的初始化: int 类型的默认值是0,  float 和double类型默认的是0.0;  String或者自定义对象是null。 eg:  int[] i = new int[5];  System.out.println(i[2]);

数组的下标:从0开始到n-1。

每个数组都有一个length属性指明其长度  eg: a.length的值为数组a的长度(元素个数)

 

二维数组:二维数组可以看成是数组的数组,也就是以数组为元素的数组。

eg:int a[][] = {{1,2},{3,4,5},{6,7,8,9}};

多维度数组的初始化应该按照从高维到低维的顺序进行(通俗的讲就是从左到右)。从内存分配方面来理解。

eg:int a[][] = new int[3][];

       a[0] = new int[2];

       a[1] = new int[3];

       a[2] = new int[3];

下面的做法是非法的:int a[][] = new int[][5];

数组拷贝  System.arraycopy(src, srcPos, dest, destPos, length);

 

二,集合

    1,Collection接口:层次结构中的根元素
        
    2,List接口:有序,可以重复
      2.1,ArrayList    数组的形式存储    连续的内存存储    查找 快   插入删除慢     删除中间的元素的时候会把删除元素的后面的元素往前移动。线程不安全,效率高 
      2.2,LinkedList   链表的形式存储    非连续的内存存储     查找 慢     插入/删除 快    链式存储  无法根据偏移量计算出下一个元素的位置  需要遍历才能找到.  线程不安全,效率高 

       2.3Vector 数组的形式存储    连续的内存存储。 线程安全,效率低下。 
    3,Set接口:无序,不可以重复
       
    4,Map接口:里面存放的是键值对的方法
       4.1:HashMap  线程不安全的,效率高

       4.2:HashTable  线程安全的,效率低


    5,

 

    6,

 

    7,

 

Java数组、ArrayList、LinkedList和Vector性能比较



 

 使用容器或者数组的 要考虑的几点:
    a,内存分配
    b,插入   查找   删除 的效率
    c,线程安全
    d, 

 

 

 

 

  • 大小: 22.5 KB
分享到:
评论

相关推荐

    Java容器.xmind

    Collection 标记: 顶级接口 List 标记: interface ArrayList 标记: class CRUD : boolean add​(E e) boolean remove​(Object o) E set​(int index, E element) E get​(int index) 底层数组实现,查询快,...

    Java并发编程:同步容器

    为了方便编写出线程安全的程序,Java里面提供了一些线程安全类和并发工具...  注意Collection和Map是一个顶层接口,而List、Set、Queue则继承了Collection接口,分别代表数组、集合和队列这三大类容器。  像ArrayLis

    Java Collection集合的简单介绍与运用

    集合按照其存储结构可以分为两大类,分别是单列集合java.util.Collection和双列集合java.util.Map,这里主要记录一下Collection集合。 Collection:单列集合类的根接口,用于存储一系列符合某种规则的元素,它有两个...

    Java基础知识点总结.docx

    Java数组与集合小结 305 递归 309 对象的序列化 310 Java两种线程类:Thread和Runnable 315 Java锁小结 321 java.util.concurrent.locks包下常用的类 326 NIO(New IO) 327 volatile详解 337 Java 8新特性 347 Java...

    JAVA基础课程讲义

    综合应用组件和容器和布局管理器 221 AWT事件处理模型 223 问题 223 事件处理模型是什么? 223 最简单的事件处理程序 224 AWT中事件处理代码编写 225 编写过程 225 处理过程 225 简化理解上面过程 225 事件和事件源...

    Java 最常见的 208 道面试题:第二模块答案

    18. java 容器都有哪些? 19. Collection 和 Collections 有什么区别? 20. List、 Set、 Map 之间的区别是什么? 21. HashMap 和 Hashtable 有什么区别? 22. 如何决定使用 HashMap 还是 TreeMap? 23. 说一下 ...

    Java—一篇读懂java集合(Collection/Map)及Lambda表达式

    集合简介 ...  Java集合类的基本接口是Collection接口和Map接口。该接口有两个基本方法:add()和iterator()方法。 public interface Collection { boolean add(E element); Iterator iterator()

    疯狂JAVA讲义

    7.2 Collection和Iterator接口 243 7.2.1 使用Iterator接口遍历集合元素 244 7.2.2 使用foreach循环遍历集合元素 246 7.3 Set接口 247 7.3.1 HashSet类 247 学生提问:hashCode方法对于HashSet的作用是什么? ...

    Java容器详解

    1.什么是容器在Java当中,有一个类专门用来存放其它类的对象,这个类就叫做容器,它就是将若干性质相同或相近的类对象组合在一起而形成的一个整体。2.常用的Java1.List有序的collection(也称为序列)。此接口的用户...

    java初学者必看

    15.2.1 容器(Collection) 15.2.2 迭代器(Iterator) 15.3 链表List 15.3.1 链表List接口方法 15.3.2 链表迭代器接口 15.3.3 链表和数组链表 15.3.4 链表应用 15.3.5 数组链表应用 15.4 集Set 15.4.1 排序集...

    Java 基础核心总结 +经典算法大全.rar

    节点流和处理流 Java IO 的核心类 File Java IO 流对象 字节流对象InputStream OutputStream 字符流对象Reader Writer 字节流与字符流的转换新潮的 NIO 缓冲区(Buffer)通道(Channel) 示例:文件拷贝案例 BIO 和 NIO ...

    Java开发详解.zip

    031301_【第13章:Java类集】_认识类集、Collection接口笔记.pdf 031302_【第13章:Java类集】_List接口笔记.pdf 031303_【第13章:Java类集】_LinkedList类笔记.pdf 031304_【第13章:Java类集】_Set接口笔记.pdf ...

    java基础案例与开发详解案例源码全

    14.1.1 AWT组件和容器354 14.1.2 布局管理器359 14.2 事件处理机制365 14.2.1 事件监听器366 14.2.2 事件适配器(EventAdapter)370 14.3 AWT常用组件372 14.3.1 界面组件372 14.3.2 菜单组件377 14.3.3 其他组件382 ...

    Java常见面试题208道.docx

    面试题包括以下十九部分:Java 基础、容器、多线程、反射、对象拷贝、Java Web 模块、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、Mybatis、RabbitMQ、Kafka、Zookeeper、MySql...

    JAVA面试题最全集

    要掌握Collection相关的接口和类的使用 56.使用StringBuffer类与String类进行字符串连接时有何区别? 57.调用Thread类的destroy()方法有什么后果? 58.多线程,用什么关键字修饰同步方法?stop()和suspend()方法...

    java 面试题 总结

    ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector...

    史上最全java面试,103项重点知识,带目录

    19. Collection 和 Collections 有什么区别? 9 20. List、Set、Map 之间的区别是什么? 9 21. HashMap 和 Hashtable 有什么区别? 10 22. 如何决定使用 HashMap 还是 TreeMap? 10 23. 说一下 HashMap 的实现原理?...

    Java面试宝典2020修订版V1.0.1.doc

    24、Collection 和 Collections的区别。 74 25、Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别? 75 26、HashMap与HashTable的区别 75 27、Java中有多少种数据结构,...

Global site tag (gtag.js) - Google Analytics