how2j.cn

本视频是解读性视频,所以希望您已经看过了本知识点的内容,并且编写了相应的代码之后,带着疑问来观看,这样收获才多。 不建议一开始就观看视频



3分7秒
本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)



示例 1 : 使用数组的局限性   
示例 2 : ArrayList存放对象   

示例 1 :

使用数组的局限性

edit
如果要存放多个对象,可以使用数组,但是数组有局限性
比如 声明长度是10的数组
不用的数组就浪费了
超过10的个数,又放不下
package collection; import charactor.Hero; public class TestCollection { public static void main(String[] args) { //数组的局限性 Hero heros[] = new Hero[10]; //声明长度是10的数组 //不用的数组就浪费了 //超过10的个数,又放不下 heros[0] = new Hero("盖伦"); //放不下要报错 heros[20] = new Hero("提莫"); } }
package charactor; 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; } }
示例 2 :

ArrayList存放对象

edit
为了解决数组的局限性,引入容器类的概念。 最常见的容器类就是
ArrayList
容器的容量"capacity"会随着对象的增加,自动增长
只需要不断往容器里增加英雄即可,不用担心会出现数组的边界问题。
package collection; import java.util.ArrayList; import charactor.Hero; public class TestCollection { @SuppressWarnings("rawtypes") public static void main(String[] args) { //容器类ArrayList,用于存放对象 ArrayList heros = new ArrayList(); heros.add( new Hero("盖伦")); System.out.println(heros.size()); //容器的容量"capacity"会随着对象的增加,自动增长 //只需要不断往容器里增加英雄即可,不用担心会出现数组的边界问题。 heros.add( new Hero("提莫")); System.out.println(heros.size()); } }


HOW2J公众号,关注后实时获知最新的教程和优惠活动,谢谢。


问答区域    
2019-04-29 旋转跳跃
苏远夏




交作业
package homeworkDay17collection;

import java.util.ArrayList;

public class collection1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
          //创建一个 List集合
		ArrayList<Integer> list = new ArrayList();
		//为集合添加对象
		list.add(new Integer(11));
		
	    System.out.println(list.size());
        //添加对象	    
		list.add(new Integer(12));
         //可得出容量增加
	    System.out.println(list.size());

		
	}

}

							


4 个答案

zhshh123
答案时间:2019-09-21
数组的长度固定的,有局限性,通常用于存储的元素长度不变,集合存储的元素可自动扩容,通常用于存储的元素不固定

281314cwj
答案时间:2019-06-26
JAVA集合框架可以自动扩容,不用担心边界问题,而数组创建后长度是固定的,不方便扩容,数组存放对象没有集合框架丰富

keko_
答案时间:2019-05-17
数组有局限性,超过了定义了的长度就报错,定义的长度没用完就浪费;集合则是用多少是多少,并且内容增加则容量增加

wonder_ing
答案时间:2019-05-08
数组有局限性,超过了定义了的长度就报错,定义的长度没用完就浪费;集合则是用多少是多少,并且内容增加则容量增加



回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到





2019-04-03 list添加问题
永动机




在往list里添加的时候会覆盖前面的数据是为啥?
加载中 >
public static void main(String args[]){
		List<Hero> heros = new ArrayList<>();
		//放进容器内
		for(int i = 0 ; i < 5; i++){
			
			heros.add(new Hero("hero"+i));
			System.out.println(heros);
			
		}
}

							


3 个答案

永动机
答案时间:2019-04-15
原来是把heros写成静态了。。。。

撸啊撸代码
答案时间:2019-04-09
因为你每次添加数据的时候都重新创建了一个集合

AINI623821CCL
答案时间:2019-04-03
heros = heros.add(new Hero("hero"+i));
这样试一下



回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到





2019-03-25 这是什么情况,提示缺少类 怎么处理啊大佬们
2019-02-28 HashSet原理问题
2018-10-16 Hero不能实例化
2018-10-16 Hero不能实例化
2018-08-22 作业!!!为啥顺序不一样!?
2017-10-13 这个 代码是抑制错误的吗?
2017-09-22 集合框架和JAVA框架有联系么
2017-09-21 站主能不能出一些关于堆,栈,二叉树等数据结构的内容
2017-09-15 关于示例2
2017-08-19 toString方法的问题
2017-05-20 Hero 的复数形式是 Heroes 哦:)
2016-10-18 线程安全那个地方报错额
2016-07-25 add方法问题
2016-07-25 莫名其妙的错误




提问之前请登陆
提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢
关于 JAVA 中级-集合框架-与数组的区别 的提问

尽量提供截图代码异常信息,有助于分析和解决问题。 也可进本站QQ群交流: 881555796
提问尽量提供完整的代码,环境描述,越是有利于问题的重现,您的问题越能更快得到解答。
对教程中代码有疑问,请提供是哪个步骤,哪一行有疑问,这样便于快速定位问题,提高问题得到解答的速度
在已经存在的几千个提问里,有相当大的比例,是因为使用了和站长不同版本的开发环境导致的,比如 jdk, eclpise, idea, mysql,tomcat 等等软件的版本不一致。
请使用和站长一样的版本,可以节约自己大量的学习时间。 站长把教学中用的软件版本整理了,都统一放在了这里, 方便大家下载: https://how2j.cn/k/helloworld/helloworld-version/1718.html

上传截图