how2j.cn

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



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



步骤 1 : ArrayList和List   
步骤 2 : List接口的方法   

步骤 1 :

ArrayList和List

ArrayList实现了接口List
常见的写法会把引用声明为接口List类型
注意:是java.util.List,而不是java.awt.List
ArrayList和List
package collection; import java.util.ArrayList; import java.util.List; import charactor.Hero; public class TestCollection { public static void main(String[] args) { //ArrayList实现了接口List //常见的写法会把引用声明为接口List类型 //注意:是java.util.List,而不是java.awt.List //接口引用指向子类对象(多态) List heros = new ArrayList(); heros.add( new Hero("盖伦")); System.out.println(heros.size()); } }
步骤 2 :

List接口的方法

因为ArrayList实现了List接口,所以List接口的方法ArrayList都实现了。
ArrayList 常用方法章节有详细的讲解,在此不作赘述


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


问答区域    
2018-05-13 对象转化数组,运行结果控制台有异常
fengchangzuozi



转化为数组有异常
package collection;

import java.util.ArrayList;

public class testcollection {

	public static void main(String[] args) {
		ArrayList  wang=new ArrayList();
		//wang.add("a");
		//wang.add("b");
		//wang.add("c");
		//wang.add("d");
		for(int i=0;i<8;i++)
		{
			wang.add("wang"+i);
		
		}
		String l=new String("shazi");//在指定位置加对象
		wang.add(2,l);
		System.out.println(wang.contains("c"));
		System.out.println(wang.contains("shazi"));//是否包含某一元素(对象是否相同,非名字)
	    System.out.println(wang);
	    System.out.println(wang.get(3));//获取指定位置对象
	    System.out.println(wang.indexOf("wang3"));//获取指定对象的位置
		 wang.remove(3);//根据下标删除所对应元素
		 System.out.println(wang);
		 wang.remove("wang6");//根据对象删除
		 System.out.println(wang);
		 wang.set(3, "wanghaijuan");//替换目标元素
		 System.out.println(wang);
		 System.out.println(wang.size());
		// ArrayList hj[]=(ArrayList[])wang.toArray(new ArrayList[] {});
		// System.out.println("数组:"+hj);
		
		 
	}
 


}

Exception in thread "main" java.lang.ArrayStoreException
	at java.lang.System.arraycopy(Native Method)
	at java.util.Arrays.copyOf(Arrays.java:3213)
	at java.util.ArrayList.toArray(ArrayList.java:407)
	at collection.testcollection.main(testcollection.java:32)


1 个答案

提莫队长前来报道 答案时间:2018-08-03
ArrayList hj[]=(ArrayList[])wang.toArray(new ArrayList[] {}); 把其中ArrayList改成String就好了,类型是数组元素类型,不是ArrayList。
String[] hj=(String[])wang.toArray(new String[] {});




答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到





2018-03-30 为什么后面使用泛型的容器对象都要用List
Java66
用ArrayList<Hero> h=new ArrayList<Hero>(); 和用List<Hero> h=new ArrayList<Hero>();有什么区别吗 我只是针对这个List类型和ArrayList类型




6 个答案

Fillol 答案时间:2018-06-27
父类引用指向子类对象了解一下

fengchangzuozi 答案时间:2018-05-13
list接口是不是继承了arraylist,写泛型时写list修改时比较方便

LABABAY 答案时间:2018-04-11
回复楼上,不是这个意思,意思是ArrayList<Hero> h = new ArrayList<Hero>();只能是ArrayList, 用List接口,可以是List<Hero> h=new ArrayList<Hero>(); 也可以是List<Hero> h=new LinkedList<Hero>(),

bartimos 答案时间:2018-04-09
意思是拿list创建的ArrayList可以存不同类型的对象吗?

Java66 答案时间:2018-04-03
好 知道了

凡凡 答案时间:2018-04-02
网上查了一些资料,总结下大概: List是一个接口,继承于Collection类,而ArrayList是接口的一个实现类。 ArrayList<Hero> h = new ArrayList<Hero>(); 这句话写死了,就是一个可以存放Hero类型的ArrayList对象; 而List<Hero> h=new ArrayList<Hero>(); 相当于一个泛型的实现,如何想改变List的类型 ,可以根据new 的不同 动态调用,改变new 的实现方法,如 LinkedList。




答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到








提问之前请登陆
关于 JAVA 中级-集合框架-List接口 的提问

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

上传截图