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. DB2 Zos 浅谈 - DB2 LUW VS DB2 Zos

    DB2 Zos 浅谈 - DB2 LUW VS DB2 Zos 概述: 各位可能对DB2 LUW了解得比较多,但对DB2 Zos(大机操作系统)知之甚少,因为IBM的内部资料一向是比较封闭的,特别是我 ...

  2. Radix_Sort

    public class Radix_sort { public static void sort(int[] arrays,int radix){ int n = 1; int length = a ...

  3. 难道你现在还不知道:C/S和B/S

    随着网络技术的不断发展,各种各样的网络应用程序大爆发.运用最多的架构是基于浏览器+服务器的B/S结构,另一种是基于的 C/S结构. 概述: BS = Browser / Server =浏览器+服务器 ...

  4. centos下配置LNMP环境(源码安装)

    准备工作,安装依赖库 yum -y install gcc automake autoconf libtool make gcc-c++ glibc libxslt-devel libjpeg lib ...

  5. Centos 搭建wordpress个人博客

    1.装apache.mariadb yum install httpd mariadb-server php php-mysql -ysystemctl start httpdsystemctl en ...

  6. 搬东西 dp

    搬东西 现有n个扁担以及一辆货车,扁担一次挑两个货物,货车可以装K个货物,货车只能运送一次货物. 现在qwb要把总共2n+k个货物搬到某个地方.现在qwb想选K个货物让货车先运走,然后剩下的2n个货物 ...

  7. 初识Java和JDK下载安装

    故事:Java帝国的诞生 对手: C&C++ ◆1972年C诞生 ◆贴近硬件,运行极快,效率极高. ◆操作系统,编译器,数据库,网络系统等 ◆指针和内存管理 ◆1982年C++诞生 ◆面向对象 ...

  8. ASP.NET Core Blazor 初探之 Blazor WebAssembly

    最近Blazor热度很高,传说马上就要发布正式版了,做为微软脑残粉,赶紧也来凑个热闹,学习一下. Blazor Blazor是微软在ASP.NET Core框架下开发的一种全新的Web开发框架.Bla ...

  9. java基础篇 之 再探内部类跟final

    之前写过一篇文章:从垃圾回收机制解析为什么局部内部类只能访问final修饰的局部变量以及为什么加final能解决问题,经过这两天的学习,发现有些不对,必须再来捋一捋 先看之前的例子: /** * @a ...

  10. VS Code的安装与配置

    VS Code的安装与配置 Visual Studio Code(VS Code)是微软旗下的一个开源文本编辑器,支持Windows.macOS.Linux操作系统.数量众多.种类多样的插件极大提高了 ...