--为什么使用集合而不使用数组?why

·集合和数组相似点:都可以存储多个对象,对外作为一个整体存在;

··数组的缺点:1.长度必须在初始化时指定,且固定不变;

2.数组采用连续存储空间,删除和添加元素效率低下;

3.数组无法直接保存映射关系;

Connection 接口存储一组不唯一,无序的对象;

List 接口存储一组不唯一,有序(索引顺序)的对象;

Set接口存储一组唯一,无序的对象;

Map接口存储一组键值对象,提供key到value的映射;

-----  Key 唯一,无序;  value不唯一,无序;

<List集合>---------------------------------是collection集合的子接口;

特点:有序,不唯一(可重复);

ArrayList:--在内存中分配连续的空间,实现了长度可变的数组;

--优点:遍历元素和随机访问元素的效率表较高;

--缺点:添加和删除需大量移动元素效率低,按照内容查询效率

LinkedList:--采用链表存储方式。

--缺点:遍历和随机访问元素低下。

-- 优点:插入、删除元素效率比较高(但是前提也是必须低效率查询)

集合当中常用到的方法:------增----删----改-----查------

1.添加的方法:add(int index,E e);    ---->在制定位置进行添加元素。

addAll(Collection c);---->添加全部。

2.删除的方法:remove(int index);---->根据角标位置删除元素

remove(Object obj);---->根据内容进行删除元素

removeAll(Collection c);---->删除集合

3.修改的方法:set(int index,E element);

4.查询的方法:get(int index);根据角标进行查询元素

------------------------------------

5.获取集合大小的方法---->size();

6.判断集合是否为空的方法---->isEmpty();

7.清除集合当中所有的元素的方法---->clear();

8.集合和数组之间能否转换

集合---------->数组转换        toArray()                  <T> T[] toArray(T[] a)

迭代器输出的原理:先判断集合当中是否有元素,如果有则进行获取,反之,循环结束。

public class ArrayListTest {
    public static void main(String[] args) {
        //1.实例化List接口对象
        List<String> list = new ArrayList<String>();
        //2.添加的方法
        list.add("javaSE");
        list.add("javaEE");
        list.add("HTML5");
        list.add("CSS3");
        list.add("JavaScript");    
        //遍历集合元素
        System.out.println("---------------标准for循环---------------");
        for(int i=0;i<list.size();i++) {
            //i变量相当于角标   最大角标:list.size()-1;
            //list集合当中存在一个get(int index)
            System.out.println(list.get(i)+"\t");
        }
        System.out.println();
        System.out.println("--------------增强for循环---------------");
        for (String str : list) {
            System.out.println(str+"\t");
        }
        System.out.println();
        System.out.println("--------------迭代输出Iterator---------------");
        Iterator<String> iter = list.iterator();
        while(iter.hasNext()) {
            System.out.println(iter.next()+"\t");
        }
    }
}

容器(list集合)的更多相关文章

  1. STL中的set集合容器进行集合运算:并、交、差实例

    集合容器的集合运算:并.交.差: #include "stdafx.h" #include <iostream> #include <set> #inclu ...

  2. multiset集合容器的集合运算:并、交、差

    set和multiset的内部通常是采用平衡二叉树来实现.当放入元素时,会按照一定的排序方法自动排序,默认是按照less<>排序规则来排序.这种自动排序的特性加速了元素查找的过程,但问题是 ...

  3. java基础之容器、集合、集合常用方法

    一.容器(Collection):数组是一种容器,集合也是一种容器 java编程中,装其他各种各样的对象(引用类型)的一种东西,叫容器 注意: 1.数组的长度是固定的 2.集合:长度不固定, 可以随时 ...

  4. Java中的容器(集合)之ArrayList源码解析

    1.ArrayList源码解析 源码解析: 如下源码来自JDK8(如需查看ArrayList扩容源码解析请跳转至<Java中的容器(集合)>第十条):. package java.util ...

  5. Java中的容器(集合)之HashMap源码解析

    1.HashMap源码解析(JDK8) 基础原理: 对比上一篇<Java中的容器(集合)之ArrayList源码解析>而言,本篇只解析HashMap常用的核心方法的源码. HashMap是 ...

  6. Java 容器(集合)

    import java.util.*; 一.基础概念 1.什么是容器? 2.为什么需要容器? 3.容器的分类? 二.重点知识 List接口 Collections类 (1)为什么需要? Collect ...

  7. Java中的容器(集合)

    1.Java常用容器:List,Set,Map List: 继承了Collection接口(public interface List<E> extends Collection<E ...

  8. Set容器--HashSet集合

    Set容器特点: ①   Set容器是一个不包含重复元素的Collection,并且最多包含一个null元素,它和List容器相反,Set容器不能保证其元素的顺序; ②   最常用的两个Set接口的实 ...

  9. Python创建容器和集合之源码分析

    _collections_abc.py文件中提供了许多抽象基类,这些类将集合分解成许多互相独立的属性集 __all__ = ["Awaitable", "Coroutin ...

  10. 练习:自己写一个容器ArrayList集合 一一数组综合练习

    package cn.bjsxt.myCollection; import java.util.Arrays; /** * 天下文章一大抄,看你会抄不会抄. * 模拟Stringbuilder 写一个 ...

随机推荐

  1. Unity插件 - MeshEditor(六) 变形动画状态机

    变形动画状态机--MeshAnimator,是针对MeshAnimation的状态管理器,有大量类似Unity animator的功能,但MeshAnimator操作会更加简便,更加直观,居家旅(zh ...

  2. Android开发学习之路--Content Provider之初体验

    天气说变就变,马上又变冷了,还好空气不错,阳光也不错,早起上班的车上的人也不多,公司来的同事和昨天一样一样的,可能明天会多一些吧,那就再来学习android吧.学了两个android的组件,这里学习下 ...

  3. J2EE进阶(八)Hibernate与延迟加载机制探究

    Hibernate与延迟加载机制探究 前言 Hibernate对象关系映射提供延迟的与非延迟的对象初始化.非延迟加载在读取一个对象的时候会将与这个对象所有相关的其他对象一起读取出来.这有时会导致成百的 ...

  4. 牛腩新闻发布系统--学习Web的小技巧汇总

    2014年11月10日,是个难忘的日子,这一天,小编的BS学习开始了,BS的开头,从牛腩新闻发布系统开始,之前学习的内容都是CS方面的知识,软考过后,开始学习BS,接触BS有几天的时间了,跟着牛腩老师 ...

  5. JAVA之旅(十七)——StringBuffer的概述,存储,删除,获取,修改,反转,将缓存区的数据存储到数组中,StringBuilder

    JAVA之旅(十七)--StringBuffer的概述,存储,删除,获取,修改,反转,将缓存区的数据存储到数组中,StringBuilder 讲完String,我们来聊聊他的小兄弟 一.StringB ...

  6. 【leetcode73】经典算法-Guess Number Higher or Lower

    题目描述: 从1-n中,随便的拿出一个数字,你来猜测. 提示 提供一个guess(int num)的api,针对猜测的数字,返回三个数值.0,-1,1 0;猜中返回num -1:比猜测的数值小 1:比 ...

  7. Java进阶(二十七)使用Dom4j解析XML文件

    使用Dom4j解析XML文件 写在前面的话 由于论文实验要求,需要实现操作XML文档,为此想到了dom4j这个工具,使用之后深感受益.在此分享给大家,以此共勉. 注:本文转载自http://blog. ...

  8. Category&nbsp;Protocol&nbsp;Exte…

    作者:韩俊强 总结以往方法: 继承是可以完成对类型的扩充,不仅能添加方法,也可以添加实例变量:/缺点:如果工程中有很多需要扩充类的使用,此时要用子类去完成替换,工作量非常大,还容易出错.下面通过例子过 ...

  9. python import自己编写的模块:import json和simplejson

    python import的模块都是库里面的,而自己的模块也可以添加 比如python的json处理,库里没有json文件,import json不行. 网上大部分人告诉你处理json用 dumps和 ...

  10. 小强的HTML5移动开发之路(4)——CSS2和CSS3

    来自:http://blog.csdn.net/dawanganban/article/details/17653149 在上一篇中我们提到学习HTML5要具备CSS的知识,在页面设计的时候HTML5 ...