--为什么使用集合而不使用数组?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. 1.2、Android Studio为新设备创建一个模块

    模块为你的应用的源码.资源文件和app level设置(比如AndroidManifest.xml)提供了一个容器.每个模块可以独立的构建.测试和调试. 通过使用模块,Android Studio可以 ...

  2. [maven学习笔记]第一节,认识maven,搭建maven开发环境,写第一个HelloWorld

    本文地址:http://blog.csdn.net/sushengmiyan/article/details/40142771 maven官网:http://maven.apache.org/ 学习视 ...

  3. Java进阶(三十九)Java集合类的排序,查找,替换操作

    Java进阶(三十九)Java集合类的排序,查找,替换操作 前言 在Java方向校招过程中,经常会遇到将输入转换为数组的情况,而我们通常使用ArrayList来表示动态数组.获取到ArrayList对 ...

  4. 开源项目——小Q聊天机器人V1.1

    小Q聊天机器人V1.0 http://blog.csdn.net/baiyuliang2013/article/details/51386281 小Q聊天机器人V1.1 http://blog.csd ...

  5. 06 Activity显示跳转

    <span style="font-size:18px;">package com.fmy.day8_29task; import com.fmy.day8_29tas ...

  6. Hibernate之持久化状态

    可持久化对象有以下三种状态: 临时状态(Transient):对象在保存进数据库之前为临时状态,这时数据库中没有该对象的信息,如果没有持久化,程序退出后临时状态的对象信息将会丢失.随时可能被垃圾回收器 ...

  7. 【一天一道LeetCode】#137. Single Number II

    一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Given a ...

  8. Docker教程:dokcer的配置和命令

    http://blog.csdn.net/pipisorry/article/details/50803028 Docker命令查询 终端运行docker命令,它会打印所有可用的命令列表及使用描述:# ...

  9. IMX51---GPIO

    GPIO(General Purpose Input/Output)指通用输入/输出,IMX51的GPIO模块提供32位双向的.通用输入和输出的信号,下图是GPIO的框图: 图1 1.      GP ...

  10. HTTP 消息结构

    HTTP 消息结构 HTTP是基于客户端/服务端(C/S)的架构模型,通过一个可靠的链接来交换信息,是一个无状态的请求/响应协议. 一个HTTP"客户端"是一个应用程序(Web浏览 ...