集合框架之ArrayList -Java
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的更多相关文章
- Java集合框架之ArrayList浅析
Java集合框架之ArrayList浅析 一.ArrayList综述: 位于java.util包下的ArrayList是java集合框架的重要成员,它就是传说中的动态数组,用MSDN中的说法,就是Ar ...
- Java——集合框架之ArrayList,LinkedList,迭代器Iterator
概述--集合框架 Java语言的设计者对常用的数据结构和算法做了一些规范(接口)和实现(具体实现接口的类).所有抽象出来的数据结构和操作(算法)统称为Java集合框架(Java Collection ...
- 集合框架(JCF/Java Collection Framework)
集合的特点:1.数据的类型可以不同2.集合长度可变3.空间不固定集合也是对象,用于检索,存储以及传输对象集合框架的组成Collection接口和Map接口 Collection是Set接口和List接 ...
- 【JAVA集合框架一 】java集合框架官方介绍 Collections Framework Overview 集合框架总览 翻译 javase8 集合官方文档中文版
原文链接: https://docs.oracle.com/javase/8/docs/technotes/guides/collections/overview.html 原文内容也一并附加在本文最 ...
- 集合框架基础知识-----java基础知识
Java集合框架 :接口:Collection.List .Set. Map:实现类:ArrayList.LinkedList.Vector.HashSet.TreeSet.HashMap.HashT ...
- Java入门系列(七)Java 集合框架(JCF, Java Collections Framework)
Java 集合概述 List.Set.Map可以看做集合的三大类 java集合就像一个容器,可以将多个对象的引用丢进该容器中. Collection和Map是java集合的根接口. List List ...
- Java集合框架介绍。Java Collection Frameworks = JCF
Java集合框架 = Java Collection Frameworks = JCF . 为了方便理解,我画了一张思维脑图.
- java集合框架05——ArrayList和LinkedList的区别
前面已经学习完了List部分的源码,主要是ArrayList和LinkedList两部分内容,这一节主要总结下List部分的内容. List概括 先来回顾一下List在Collection中的的框架图 ...
- java基础之集合框架--使用ArrayList类动态 存储数据
一.ArrayList是List接口下的一个实现类,实现了长度可变的.连续的数组:拥有数组的特性. 遵循了LIst的规则:不唯一的.有序的. 如果没有增加泛型的话,集合中可以添加任何类型的数据. 使用 ...
随机推荐
- NodeJS实现websocket代理机制
使用的模块 ws http http-proxy 主要通过htt-proxy实现中转 启动websocket服务 var WebSocketServer = require('ws').Server; ...
- 什么是动态规划?动态规划的意义是什么?https://www.zhihu.com/question/23995189
阮行止 上海洛谷网络科技有限公司 讲师 intro 很有意思的问题.以往见过许多教材,对动态规划(DP)的引入属于"奉天承运,皇帝诏曰"式:不给出一点引入,见面即拿出一大堆公式吓人 ...
- Codeforce 263D Cycle in Graph 搜索 图论 哈密尔顿环
You've got a undirected graph G, consisting of n nodes. We will consider the nodes of the graph inde ...
- UVA-1 #1. A + B Problem
给你两个数 aa 和 bb,请输出他们的和. 输入格式 一行,两个用空格隔开的整数 aa 和 bb. 输出格式 一个整数,表示 a+ba+b. 样例一 input 2 3 output 5 限制与约定 ...
- mysql5.7 修改密码,修改权限
1.修改数据库对指定用户和ip权限 a. IP为192.168.0.1的用户jack拥有对数据库datebase的表table的 增删改查权限, ,连接密码为password grant select ...
- 使用jQuery完成课工场论坛列表
1.点击我要发帖 2.显示出form表单,然后我们填入标题和选择板块 3.点击发布,隐藏表单,发帖列表中出现随机头像,刚才填入的标题和板块显示在列表中,其中还显示出了发布消息的时间 4.再一次的点击我 ...
- Constant Palindrome Sum(贪心*RMQ)
传送门 怎么说呢,想了几个小时没做出来实在可惜. \(\color{Red}{首先肯定想到暴力嘛!但是x定值有那么多值可以取,怎么办呢?}\) 但是题目中有一个很关键的条件 \[a[i]>=1\ ...
- High Card Low Card G(田忌赛马进阶!!)
传送门 \(首先一定要明确一个观点,不然会完全没有思路\) \(\bullet\)\(由于前半段大的更优,后半段小的更优.\) \(\bullet\)\(所以,\)Bessie\(一定会在前(n/2) ...
- B. Heaters 思维题 贪心 区间覆盖
B. Heaters 这个题目虽然只有1500的分数,但是我还是感觉挺思维的,我今天没有写出来,然后看了一下题解 很少做这种区间覆盖的题目,也不是很擅长,接下来讲讲我看完题解后的思路. 题目大意是:给 ...
- JAVA设计模式之单例(singleton)
一.饿汉式 /** * 饿汉式 */public class Singleton01 { private static final Singleton01 instance = new Singlet ...