java中级——集合框架【1】-ArrayList
集合框架----ArrayList
引子:我们先来看看传统数组的用法
写一个Hero对象类
package cn.jse.t1;
public class Hero {
public String name;
public float hp;
public int damage;
public Hero(){}
//增加一个初始化name的构造方法
public Hero(String name){
this.name=name;
}
//重写一个toString 方法
public String toString(){
return name;
}
}
写一个测试类
package cn.jse.t1;
public class TestCollection {
public static void main(String[] args) {
//数组的局限性
Hero hero[] = new Hero[10];
//分析:声明了长度为10的数组,如果不用完就是浪费内存,超过了10个又放不下
hero[0] = new Hero("ADC");
hero[11]= new Hero("Mid"); //这里超过了10个就会报错
}
}
为了解决这种的尴尬局面,我们可以使用容器类ArrayList,我们增加一些代码在测试类里面。
package cn.jse.t1;
import java.util.ArrayList;
public class TestCollection {
public static void main(String[] args) {
...
//为了解决数组的局限性,引入了容器类的概念
ArrayList heros=new ArrayList();
heros.add(new Hero("中单"));
//输出一下当前的容器的容量
System.out.println(heros.size());
heros.add(new Hero("辅助"));
System.out.println(heros.size());
//结果发现容器的容量是随着对象的增加而增加的,就不用考虑数组的边界问题了
}
}
我们可以看下控制台的输出:
1
2
我们可以看看ArrayList的常用方法:

使用方法:我们还是在测试类中增加新的代码(add、contains)
package cn.jse.t1;
import java.util.ArrayList;
public class TestCollection {
public static void main(String[] args) {
...
//接下来我们可以看看ArrayList的常用方法
ArrayList<Hero> heros2=new ArrayList<Hero>();
//把五个对象放入ArrayList中
for(int i=0;i<5;i++){
heros2.add(new Hero("hero " + i));
}
System.out.println(heros);
// 在指定位置增加对象 比如在下标3位置add一个superhero
Hero superHero = new Hero("Super hero");
heros2.add(3, superHero);
//将数组中所有的hero输出
System.out.println(heros2.toString());
//通过方法contains 判断一个对象是否在容器中
System.out.println("那么这个Hero6在不在这里面呢? 回答是:"+heros2.contains(new Hero("hero6")));
System.out.println("那么这个superHero在不在这里面呢? 回答是:"+heros2.contains(superHero));
}
}
控制台输出:
[中单, 辅助] //这里是因为我们之前有加了2个hero
[hero 0, hero 1, hero 2, Super hero, hero 3, hero 4]
那么这个Hero6在不在这里面呢? 回答是:false
那么这个superHero在不在这里面呢? 回答是:true
其他的方法就不一一列举了,有兴趣的同学可以看看相关的知识点
List
引子:ArrayList实现了接口List,常见的写法会把引用声明为接口List类型。还要注意一点的是:import java.util.List;而不是awt里面的类。

因为ArrayList实现了List接口,所以List接口的方法ArrayList都实现了。所有用法是和上面一样的。
List heros = new ArrayList();
泛型 Generic
其中:1.不指定泛型的容器,可以存放任何类型的元素
2.指定了泛型的容器,只能存放指定类型的元素以及其子类我们之前编写的list或者是ArrayList都有编译警告,是因为没有使用泛型。所以我们可以这么干:
List<Hero> heros = new ArrayList<Hero>();
还有一点是在JDK7中提供了一个减少代码量的方式:
List<Hero> heros = new ArrayList<>();
虽然没有少写很多代码,但是总归比原先的好写一点对吧!
其他的泛型内容包括支持泛型的类、泛型转型等等内容以后再更
java中级——集合框架【1】-ArrayList的更多相关文章
- java中级——集合框架【4】-Collections
Collections 首先我们要知道Collections是一个类,容器的工具类,就如同Arrays是数组的工具类 反转 reverse 使List中的数据发生发转 package cn.jse.c ...
- java中级——集合框架【3】-HashSet
HashSet package cn.jse.hashset; import java.util.HashSet; public class TestCollection { public stati ...
- java中级——集合框架【2】-二叉树
二叉树 二叉树概念 首先我们要明确,二叉树由各种节点组成:还有就是二叉树特点:(1)每个节点都可以有左子节点,右子节点(2)每一个节点都有一个值 如图所示: 代码所示: package cn.jse. ...
- Java集合框架之ArrayList浅析
Java集合框架之ArrayList浅析 一.ArrayList综述: 位于java.util包下的ArrayList是java集合框架的重要成员,它就是传说中的动态数组,用MSDN中的说法,就是Ar ...
- java的集合框架最全详解
java的集合框架最全详解(图) 前言:数据结构对程序设计有着深远的影响,在面向过程的C语言中,数据库结构用struct来描述,而在面向对象的编程中,数据结构是用类来描述的,并且包含有对该数据结构操作 ...
- java.util 集合框架集合
java的集合框架为程序提供了一种处理对象组的标准方式.设计了一系列标准泛型接口: ⑴Collection ()接口,扩展了Iterable接口,位于集合层次结构的顶部,因此所有的集合都实现Colle ...
- Java基础——集合框架
Java的集合框架是Java中很重要的一环,Java平台提供了一个全新的集合框架.“集合框架”主要由一组用来操作对象的接口组成.不同接口描述一组不同数据类型.Java平台的完整集合框架如下图所示: 上 ...
- java的集合框架之一
java是一套很成熟的东西,很多商用的东西都喜欢用它,用的人多,稳定.不过一般也不怎么说起它,因为太常见了,私下里说,写java应用层得就像农民工,每一处都是搭积木,根据设计师的东西如何优雅地搭好积木 ...
- 浅谈Java的集合框架
浅谈Java的集合框架 一. 初识集合 重所周知,Java有四大集合框架群,Set.List.Queue和Map.四种集合的关注点不同,Set 关注事物的唯一性,List 关注事物的索引列表,Q ...
随机推荐
- https的证书认证 iOS版
一.证书链 SecTrustRef: SecTrustRef trust = challenge.protectionSpace.serverTrust; 需要先拿出一个 SecTrustRef 对象 ...
- Rancher3----安装部署rancher
官方说:Rancher是使用一系列的Docker容器进行部署的.运行Rancher跟启动两个容器一样简单.一个容器作为管理服务器部署,另外一个作为集群节点的Agent部署 官方的意思是:学好docke ...
- 查看linux内存使用情况
查看内存使用情况 free -m total used free shared buffers cached Mem: -/+ buffers/cache: Swap: used=total-free ...
- 用powershell实现自动化操作
每天登录OA太繁琐,公司OA又只允许用IE,本身写chrome扩展水平也不高,更搞不懂selenium 既然是windows下工作,当然还得微软的东东.研究了几天,才发现用powershell就很方便 ...
- BeautifulSoup类
from bs4 import BeautifulSoup soup1 = BeautifulSoup("<html>data</html>"," ...
- 高精度除法(b为int类型)
#include<iostream> #include<cstring> #include<cstdio> using namespace std; ],a[],b ...
- Linux中断管理 (1)Linux中断管理机制
目录: <Linux中断管理> <Linux中断管理 (1)Linux中断管理机制> <Linux中断管理 (2)软中断和tasklet> <Linux中断管 ...
- 使用python进行utf9编码和解码
在2005年4月1日(也就是愚人节),IEEE的rfc4042文件规定了utf9和utf18这2个所谓的Unicode的高效转换格式. 具体的格式说明,有兴趣的话点击上面的rfc4042链接去观看. ...
- SpringBoot整合Druid数据源
关于SpringBoot数据源请参考我上一篇文章:https://www.cnblogs.com/yueshutong/p/9409295.html 一:Druid介绍 1. Druid是什么? Dr ...
- mybatis源码-原来resultMap解析完是这样
目录 1 两个基础类 1.1 列映射类ResultMapping 1.2 结果集映射类ResultMap 2. 解析 2.1 入口函数 2.2 解析流程 2.3 获取 id 2.4 解析结果集的类型 ...