ArrayList

1.与数组的区别

如果要存放多个对象,可以使用数组,但是数组会有长度的限制,会出现不够用或者是浪费的情况。

为了解决数组的局限性引入了容器的概念,最常用的容器就是ArrayList

容器的容量会随着对象的增加,自动增长,不用担心超限的情况发生。

2.定义与常用方法(SchoolWork默认为一个类)(java.util.ArrayList)

<1>定义

ArrayList allWork = new ArrayList();  //定义格式

<2>add增加

allWork.add(new SchoolWork("math"));  //直接add对象,把对象加在最后面
allWork.add(1, "math"); //在指定位置增加对象

<3>contains判断是否存在

System.out.println(allWork.contains("math"));  //判断是否存在math,存在输出true,反之false

<4>get获取指定位置的对象

System.out.println(allWork.get(1));  //超限则会报错

<5>indexOf获取对象所处的位置

System.out.println(allWork.indexOf("math"));  //输出math的位置下标

<6>remove删除对象

allWork.remove(1);  //删除下标1的对象
allWork.remove("math"); //直接指定删除对象删除

<7>set替换

allWork.set(1, "english");  //把下标1的元素替换为english

<8>size获取大小

System.out.println(allWork.size());  //输出大小

<9>toArray转换为数组

SchoolWork arr[] = (school[])allWork.toArray(new SchoolWork[]{});

<10>addAll把另一个容器所有对象都加进来

//假设有allWork和threeWork两个容器,并且threeWork中已有对象
allWork.addAll(threeWork); //将threeWork中的对象都添加到allWork中

<11>clear清空容器

allWork.clear();

3.List接口

ArrayList实现了List接口,通常会把引用声明为List接口类型(导入java.util.List)

List allWork = new ArrayList();

4.泛型Generic

不指定泛型的容器可以存放任何类型的元素

指定了泛型的容器只能存放指定类型的元素及其子类

List<SchoolWork> allWork = new ArrayList<SchoolWork>();  //为了不出现编译警告,前后都使用泛型
List<SchoolWork> allWork = new ArrayList<>(); //jdk7提供了简单的缩写

5.遍历ArrayList

<1>for循环遍历

for (int i = 0; i < allWork.size(); i++) {
SchoolWork h = allWork.get(i);
System.out.println(h);
}

<2>迭代器遍历(java.util.Iterator)

Iterator<SchoolWork> it= allWork.iterator();
//从最开始的位置判断"下一个"位置是否有数据
//如果有就通过next取出来,并且把指针向下移动
//直到"下一个"位置没有数据
while(it.hasNext()){
SchoolWork h = it.next();
System.out.println(h);
}
//迭代器的for写法
System.out.println("--------使用for的iterator-------");
for (Iterator<SchoolWork> iterator = allWork.iterator(); iterator.hasNext();) {
SchoolWork work = (SchoolWork) iterator.next();
System.out.println(work);
}

<3>增强型for循环

很多程序员的首选,但存在不足之处:

无法用来进行ArrayList的初始化

无法得知当前是第几个元素了,当需要只打印单数元素的时候就做不到了

for (SchoolWork h : allWork) {
System.out.println(h);
}

集合框架之ArrayList -Java的更多相关文章

  1. Java集合框架之ArrayList浅析

    Java集合框架之ArrayList浅析 一.ArrayList综述: 位于java.util包下的ArrayList是java集合框架的重要成员,它就是传说中的动态数组,用MSDN中的说法,就是Ar ...

  2. Java——集合框架之ArrayList,LinkedList,迭代器Iterator

    概述--集合框架 Java语言的设计者对常用的数据结构和算法做了一些规范(接口)和实现(具体实现接口的类).所有抽象出来的数据结构和操作(算法)统称为Java集合框架(Java Collection ...

  3. 集合框架(JCF/Java Collection Framework)

    集合的特点:1.数据的类型可以不同2.集合长度可变3.空间不固定集合也是对象,用于检索,存储以及传输对象集合框架的组成Collection接口和Map接口 Collection是Set接口和List接 ...

  4. 【JAVA集合框架一 】java集合框架官方介绍 Collections Framework Overview 集合框架总览 翻译 javase8 集合官方文档中文版

    原文链接: https://docs.oracle.com/javase/8/docs/technotes/guides/collections/overview.html 原文内容也一并附加在本文最 ...

  5. 集合框架基础知识-----java基础知识

    Java集合框架 :接口:Collection.List .Set. Map:实现类:ArrayList.LinkedList.Vector.HashSet.TreeSet.HashMap.HashT ...

  6. Java入门系列(七)Java 集合框架(JCF, Java Collections Framework)

    Java 集合概述 List.Set.Map可以看做集合的三大类 java集合就像一个容器,可以将多个对象的引用丢进该容器中. Collection和Map是java集合的根接口. List List ...

  7. Java集合框架介绍。Java Collection Frameworks = JCF

    Java集合框架 = Java Collection Frameworks  = JCF . 为了方便理解,我画了一张思维脑图.

  8. java集合框架05——ArrayList和LinkedList的区别

    前面已经学习完了List部分的源码,主要是ArrayList和LinkedList两部分内容,这一节主要总结下List部分的内容. List概括 先来回顾一下List在Collection中的的框架图 ...

  9. java基础之集合框架--使用ArrayList类动态 存储数据

    一.ArrayList是List接口下的一个实现类,实现了长度可变的.连续的数组:拥有数组的特性. 遵循了LIst的规则:不唯一的.有序的. 如果没有增加泛型的话,集合中可以添加任何类型的数据. 使用 ...

随机推荐

  1. WCF客户端和服务的实现

    WCF客户端和服务 ?服务器端: – 定义和实现服务契约 – 为服务类型构建ServiceHost实例,暴露endpoints – 打开通讯通道 ?客户端: – 需要服务契约的一个副本和关于endpo ...

  2. 有向图强连通分量SCC(全网最好理解)

    定义: 在有向图中,如果一些顶点中任意两个顶点都能互相到达(间接或直接),那么这些顶点就构成了一个强连通分量,如果一个顶点没有出度,即它不能到达其他任何顶点,那么该顶点自己就是一个强连通分量. 做题的 ...

  3. JS中由闭包引发内存泄露的深思

    目录 一个存在内存泄露的闭包实例 什么是内存泄露 JS的垃圾回收机制 什么是闭包 什么原因导致了内存泄露 参考 1.一个存在内存泄露的闭包实例 var theThing = null; var rep ...

  4. 阿里云函数计算上部署.NET Core 3.1

    使用阿里云ECS或者其他常见的VPS服务部署应用的时候,需要手动配置环境,并且监测ECS的行为,做补丁之类的,搞得有点复杂.好在很多云厂商(阿里云.Azure等)提供了Serverless服务,借助于 ...

  5. vim基础快捷键

    vim快捷键 1. 移动光标 快捷键 作用 h 光标向左移动一个字符 j 光标向下移动一个字符 k 光标向上移动一个字符 l 光标向右移动一个字符 6j 向下移动6个字符 Ctrl+f 屏幕向下移动一 ...

  6. 基于BasicRF点对点无线开发基础知识

    BasicRF点对点概述 BasicRF软件包有四大部分: <1> 硬件层:Hardware Layer. <2> 硬件抽象层:Haware Abstraction Layer ...

  7. Spark离线日志分析,连接Spark出现报错

    首先,我的代码是这样的 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} object ...

  8. imos-累积和法

    在解AOJ 0531 Paint Color时,学到了一个累积和的妙用--imos法,由于原文是日语,所以特意翻译过来.值得一提的是,作者Kentaro Imajo跟鄙人同龄,却已取得如此多的成就,而 ...

  9. angular 实现依赖注入

    1:首先获取module对象var myAppModule = angular.module('myApp', []); 2:定义对象(类似spring中xml声明bean对象<bean id= ...

  10. 【题解】poj 3254 玉米田

    假如我们知道第i-1行的有x种放法,那么对于第i行的每一种放法都有x种,所以定义dp[i][j]表示第i行状态为j时的方法数,有转移方程:dp[i][j]=sum(dp[i-1][k]) k表示i-1 ...