精华内容
下载资源
问答
  • 容器与数组的区别? - 数组能存基础数据类型,也可以存引用数据类型;容器只能存引用数据类型 - 数组的长度是固定的,容器的长度可以根据元素的增加而增加 01 为什么要有迭代器? 为了抽象所有的方法(List, Set......

    00 为什么要有容器?

    我知道有数组,但数组有一个弊端,它是固定的,不可变。这个经常会导致出现数组越界导常的错误。并且还需要事先知道这个数组的长度才可以定义。

    但很多时候,我们并不知道未来将会发生什么,所以我们创造了容器,它是不固定的,可变的,可以根据元素的增加而增加,每次增加原数组的1.5倍。为什么是1.5倍呢,因为2倍太大了,1倍太小,所以为了保证效率,择中选1.5倍。

    数组与容器的区别?

    • 数组能存基础数据类型,也可以存引用数据类型;容器只能存引用数据类型
    • 数组的长度是固定的,容器的长度可以根据元素的增加而增加

    01 为什么会有迭代器?

    数组有的功能,容器大部分都会有。数组存放数据可能是有序的,也可能是无序的。所以容器也具备同样的功能,容器英文:Collection,有序的表示为List,即链表结构,无序的表示为Set,即想在哪建立就在哪建立。

    问题来了,有序的List,我们可以通过索引来遍历数组。但无序的Set怎么办?

    先展示一下有序的List通过size()以及get()方法来遍历数组

    public static void demo3() {
        List list = new ArrayList();
        list.add(new Student("aa",12));
        list.add(new Student("bb",13));
        list.add(new Student("cc",14));
        list.add(new Student("dd",15));
    
        for(int i = 0; i < list.size(); i++) {
            Student stu = (Student) list.get(i);
            System.out.println(stu.getName() + "," +stu.getAge());
        }
    }
    

    解决办法:分开建立两个方法不就可以了么。

    比如:List就建立一个ListIterator类(如果不考虑命名规范,这个名字可以随便定义啦),Set就再建立一个SetIterator类,我们说Java是面向对象编程,这是一种抽象编程,换句话说,就是对具体类的依赖性最小。所以,为了解决这样的问题,我们就会将这些类抽象出来,建立Iterator类,这也就是为什么会有Iterator迭代器的原因了。

    用一句话总结:Iterator类的访问方式就是把不同集合类的访问逻辑抽象出来,使得不用暴露集合内部的结构而达到循环遍历集合的效果。

    为了达到抽象,我们将共同的方法给抽象出来,Iterator类就只有三个方法了,hasNext()、next()、remove()。不同的集合再由子类去重写这三种方法,而对于使用者来说,不用管是怎么实现的,直接调用就可以了。

    展开全文
  • 容器数组的区别

    千次阅读 2013-08-07 16:04:57
    容器数组的区别: 创建方式: 创建数组时必须指定其大小; 而容器不必指定,可动态改变其大小。 存储方式: 数组在内存空间上是连续存储的; 而容器中顺序容器vector和deque是连续存储的(dequevector 不同的是...
    容器和数组的区别:
    创建方式:
    创建数组时必须指定其大小;
    而容器不必指定,可动态改变其大小。
    存储方式:
    数组在内存空间上是连续存储的;
    而容器中顺序容器vector和deque是连续存储的(deque与vector 不同的是它支持高效地在其首部插入和
    删除元素),但list是链式存储的。
    访问效率:
    访问数组元素时可根据数组下标直接访问相应位置的元素;而容器中顺序容器vector和deque支持对元素
    的随机访问(也支持下标访问元素,或at()函数,如ivec.at(5)返回容器ivec中第6个元素),但list不支
    持。
    元素操作:
    list支持在容器中间位置插入或删除元素,而其他的不支持。
     
    一个指针必然是三种状态之一:
    保存一个特定对象的地址,指向某个对象后面的另一个对象,或者是0值,表明不指向任何对象


    展开全文
  • 容器与数组

    2019-10-09 06:18:51
    数组与容器最大的区别是声明时数组的大小固定且保持不变,vector是序列容器,可改变大小的数组。 接下来,分别详细分析数组与容器的不同 声明: array是一个包装固定大小数组的容器,因此声明时必须确定其大小 ...

                数组:array   容器:vector

      数组与容器最大的区别是声明时数组的大小固定且保持不变,vector是序列容器,可改变大小的数组。

    接下来,分别详细分析数组与容器的不同

       声明: array是一个包装固定大小数组的容器,因此声明时必须确定其大小

                  array<datatype,array_size>array_name;

                  例:array<int,3> n={1,2,3};

                   vector 不需要指定数组长度及数据类型

                   vector<datatype> array_name;

                   例:vector<int> marks;

        初始化:数组需要在声明时进行赋值进行初始化!!!

                 方法一:array<int,3> n={1,2,3};

                 方法二:array<int,3> n{{1,2,3}};

                 方法三:array n;

                               n={1,2,3};

                        vector与array初始化相同

           大小:array.size();

                      mark.size();

           传递函数:void printArray(const array<int,4> &n)

                            void printVector(const vector<int> &n)

           功能函数:at():访问指定位置的元素

                           front()、back():取第一个、最后元素

                           max_size():可容纳的最大元素数

                           容器:v.resize() 包含指定数量的元素

                           v.push_back() 末尾添加一个新元素

                           v.pop_back() 删除最后一个元素

                           v.capacity() 返回向量分配的存储空间

                            v.reserve() 所需元素大于vector的容量时,增加向量的容量

                            v.insert(v.begin(),100)指定位置前插入元素

                            v.earse()删除一个或多个元素

             Iterarors:迭代器,一种指向项,指向容器元素,拥有迭代容器的功能

                             begin(),end();

                             反向容器:rebegin(),rend()

             多维数组:array<array<int,3>,3>a {{{1,2,3},{4,5,6},{7,8,9}}};

              多维容器:vector<vector<int>> v{{{1,2,3},{4,5,6},{7,8,9}}};

    转载于:https://www.cnblogs.com/Nothing-9708071624/p/10155006.html

    展开全文
  • Java 容器与数组

    千次阅读 2014-08-31 14:35:55
    数组和其它容器的区别主要有三个:效率,类型,和存放基本类型的能力.JAVA中的数组是一种效率最高的存储和随机访问对象引用序列的方式.它就是一个简单的线性序列,所以访问是非常快.但它也损失了其他的特性.当创建一个...
    容器是用来保存多个对象的东西.严格来说是保存对象的引用.因为对象实际的数据是放在另外的地方的.放在容器中的只是指向那块内存区域的一个标识.
    
    JAVA中内置了数组.数组和其它容器的区别主要有三个:效率,类型,和存放基本类型的能力.JAVA中的数组是一种效率最高的存储和随机访问对象引用序列的方式.它就是一个简单的线性序列,所以访问是非常快.但它也损失了其他的特性.当创建一个数组时,它的长度就被固定了.通常是创建一个固定大小的数组,在空间不足时,再创建一个大的数组,然后把旧数组中的所有引用移到新数组中.这种机制被JAVA中的另一个容器:ArrayList采用.所以,ArrayList的效率要比数组低.JAVA中还有一些其他的容器:List,Set(每个对象只保存一份),Map(允许将一个对象和另一对象关联存储).它们都是针对Object来处理的.而Object是JAVA中所有类的基类,所以说这些容器可以存放所有JAVA类.注意:基本类型如:boolean char byte short long float double void..不继承Object,所以这些容器不能存放这些.如果要存进去必须用JAVA为这些类提供的 包装类 它们对应的包装类是: Boolean    Character    Byte    Short    Integer    Long    Float    Double    Void

    因为基本类型是不继承自Object的,所以强制转换也是不可能的.必须用包装类进行强制转换.比如说将一个String强制转换成int型,必须:Integer.praseInt("3");必须用包装类来.自动装箱与自动拆箱原理

    经包装类包装后的基本类型就可以随便往容器里放了.

    JAVA容器的缺点:
    1)将对象保存到容器的时候它的类型信息就丢失了.因为容器是针对Object的.所以可以将不同类型的对象放入同一个容器中.而数组则不同,一个数组里只能存同一类型的对象.
    2)在从容器中取出对象使用时必须进行类型转换.
    当然,上面的问题可以通过泛型来解决.

    容器的选择:
    容器实际上只有三种:Map , List, Set;但每种接口都有不同的实现版本.它们的区别可以归纳为由什么在背后支持它们.也就是说,你使用的接口是由什么样的数据结构实现的.
    List的选择:
    比如:ArrayList和LinkedList都实现了List接口.因此无论选择哪一个,基本操作都一样.但ArrayList是由数组提供底层支持.而LinkedList是由双向链表实现的.所以,如果要经常向List里插入或删除数据,LinkedList会比较好.否则应该用速度更快的ArrayList.
    Set的选择
    HashSet总是比TreeSet 性能要好.而后者存在的理由就是它可以维持元素的排序状态.所以,如果需要一个排好序的Set时,才应该用TreeSet
    Map选择:
    同上,尽量选择HashMap,只要需要排好序的确Map时才用Treemap;

    展开全文
  • 集合与数组的区别

    2019-10-24 23:32:34
    数组:(可以存储基本数据类型)是用来存现对象的一种容器,但是数组的长度固定,不适合在对象数量未知的情况下使用,大小固定,只能存储相同数据类型的数据。 集合:(只能存储对象,对象类型可以不一样)的长度可...
  • 集合与数组的区别 数组和集合类都是容器 数组长度是固定的,集合长度是可变的。数组中可以存储基本数据类型,集合只能存储对象数组中存储数据类型是单一的,集合中可以存储任意类型的对象。 集合类的特点 用于存储...
  • Vector与数组的区别

    千次阅读 2018-03-25 17:23:12
    转自...虽说两者有相似之处,但也有显著的区别,c++ primer的作者说到,在实际的编程中,我们作为程序员应该避免用到低级数组和指针,而更应该多用高级的vector和迭代器。在程序强调速度的情...
  • 1.vector与数组的区别 vector是c++标准库中bai定义的类型,是容器du的一种。标准库中容器有很多种,vector只是最基本的一种,vector类型和数组类型的基本功能都是一样的,就是存储同类元素,但是他与数组最大的区别...
  • java 集合与数组的区别

    千次阅读 2018-07-24 08:25:06
    相同点:数组和集合类同是容器。 不同点 :1.数组的长度是固定的,集合的长度是可变的。  2.数组只能存储同类型的对象,集合可以存储不同类型的对象。  3.集合只能存储对象不能存储基本类型...
  • 虽说两者有相似之处,但也有显著的区别,c++ primer的作者说到,在实际的编程中,我们作为程序员应该避免用到低级数组和指针,而更应该多用高级的vector和迭代器。在程序强调速度的情况下,我们程序员可以在类类型的...
  • 对象数组普通数组的区别

    千次阅读 2016-07-17 16:02:57
    通过for-each来帮助理解容器类,对象数组,普通数组
  • vector普通数组的区别: 不同之处在于数组是静态空间,而vector可以动态扩展 动态扩展 并不是在原空间之后续接新空间,而是找更大的内存空间,然后将原数据拷贝新空间,释放原空间。 vector容器的迭代器是支持...
  • 数组(可以存储基本数据类型)是用来存现对象的一种容器,但是数组的长度固定,不适合在对象数量未知的情况下使用。 集合(只能存储对象,对象类型可以不一样)的长度可变,可在多数情况下使用。 二、层次关系 2...
  • 数组是JAVA语言内置的数据类型,它是一个线性的序列,所以它可以快速的访问其他的元素。但是速度是要有代价的,当你创建了一个数组之后,它的容量就固定了,而且在其生命周期里是不能改变的。...数组与其它容器的区别
  • 集合由来?...而是一个容器类型变量。有哪些是容器类型呢?(数组和stringbuffer)stringbuffer结果是一个字符串。不一定满足我们需求,所以选择数组;这就是对象数组而对象数组又不能适应变...
  • 二者都是容器,可以用来存储数据 b.但是 数组可以存储多种数据,但必须是同一种数据类型 StringBuffer也可以存储多种数据,但是它最终是里面存放都是字符串数据 package org.wdit.unit10.String.Stringbuffer...
  • /* * 集合由来: * 我们学习是面向对象... * 而要想存储多个对象,就不能是一个基本变量,而应该是一个容器类型变量,在我们目前所学习知识里面,有那些是容器类型呢? * 数组和StringBuffer。但是呢?
  • java中数组与容器的区别

    千次阅读 2016-08-24 16:28:53
    数组与容器的区别:1. 数组可以存储基本数据类型,也可以存储引用数据类型,集合只能存储引用数据类型。 2. 数组是固定长度的,集合的长度是可变的。3. 数组存储的元素必须是同一个数据类型;集合存储的对象可以是...
  • 数组是JAVA语言内置的数据类型,它是一个线性的序列,所以它可以快速的访问其他的元素。但是速度是要有代价的,当你创建了一个数组之后,它的容量就固定了,而且在其生命周期里是不能改变...数组与其它容器的区别...
  • 数组与容器的区别

    千次阅读 2011-10-06 15:43:10
    数组排序:java使用内置的排序算法可以对任意的基本类型数组或对象数组进行排序。String数组排序算法依据词典编排顺序排序,对...数组与容器的区别体现在三个方面:效率,类型识别以及可以持有基本类型primitives。 1
  • 用于存储一种或者多种引用数据类型,并且长度可变的容器。 集合外延有:List集合、Set集合、Queue集合 List集合 是用于有序存储可重复元素集合。 List接口继承了Collection接口,声明有序存储对象(可...
  • 而要想存储多个对象,就不能是一个基本变量,而应该是一个容器类型变量,在我们目前所学过知识里面,有哪些是容器类型呢?数组和StringBuffer。但是呢?StringBuffer结果是一个字符串,不一定满足我们要求...
  • 容器中顺序容器vector和deque是连续存储(dequevector 不同是它支持高效地在其首部插入和删除元素),但list是链式存储。 访问效率: 访问数组元素时可根据数组下标直接访问相应位置元素;而容器...
  • 数组与集合的区别

    2019-07-22 22:03:28
    (1)数组是大小固定,并且同一个数组只能存放类型一样数据(基本类型/引用类型) (2)JAVA集合可以存储和操作数目不固定一组数据。 (3)若程序时不知道究竟需要多少对象,需要在空间不足时自动扩增容量,则需要...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,197
精华内容 478
关键字:

容器与数组的区别