提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
一、arraylist集合的出现
对象数组的使用
定义一个数组,用来存储3个person对象;
首先新建一个person.java文件,文件中编写:private String name;private int age;
下一行直接输入alt+insert或者在code(代码)里选择generate(生成)(如图1所示)之后点击constructor(构造函数)(如图2所示),之后选择select none(取消选择)(如图3所示),就自动生成无参构造 public person() {
};
结果如下图所示:
下一行直接输入alt+insert或者在code(代码)里选择generate(生成),之后点击constructor(构造函数),之后按着shift将两个都选上,选择ok(如图所示),就自动生成全参构造 public person(String name, int age) {
this.name = name;
this.age = age;
};
结果如图所示:
下一行直接输入alt+insert或者在code(代码)里选择generate(生成),之后点击getter and setter,之后按着shift将两个都选上,选择ok(如图所示),就自动生成public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
结果如图所示:
这个时候都定义好了,接下来需要创建对象,直接通过构造方法来进行成员变量的赋值;package cn.demo02;
/*定义一个数组用来存储3个person对象*/
public class array01 {
public static void main(String[] args) {
//首先创建一个长度为三的数组,用来存放person类型的对象
person[] array=new person[3];
//System.out.println(array[0]);//null
person one=new person("富大龙",18);
person two=new person("张毅",19);
person three=new person("淅淅",20);//one two three都是地址值接下来把这三个对象都放到数组里
//将one当中的地址值赋值到数组的0号元素位
array[0]=one;
array[1]=two;
array[2]=three;
System.out.println(array[0]);//得到的是one所在的地址值:cn.demo02.person@4554617c
person person1=array[1];
System.out.println(person1.getName());//张毅
}
}
所以任何数据类型都可以作为数组当中元素的类型,这就是对象数组的使用。
对象数组的缺点
**但是数组有一个缺点:一旦创建,程序运行期间长度不可以发生改变。
为了弥补对象数组的缺点,出现了arraylist集合
二、arraylist集合概述
1.arraylist集合和数组有什么区别
数组的长度不可以发生改变,但是arraylist集合的长度可以随意变化,这是两者最大的区别所在,java中大多数集合长度都是可以随意改变的,这就解决了长度后来需要发生改变却不能改变这样的缺点。
2.arraylist集合概述
打开API进行搜索,先看包是java.util,类的名称有所不同多了一个尖括号ArrayList,这个尖括号内部有一个大写E,这个E代表泛型。
3.arraylist集合基本使用
在函数中输入arraylist会自动添加导包,对于arraylist来说,有一个代表泛型,泛型也就是装在集合中的所有元素全都是统一的什么类型;注意:泛型只能是引用类型,不能是基本类型。
ArrayList list=new ArrayList<>()
创建一个Arraylist集合,集合的名称是list,里面装的全都是String类型的字符串
备注
从JDK1.7+开始,等号右侧的尖括号内部可以不写内容,但是左侧<>本身还是要写的,系统会默认一样。并且如果向List当中写入string之外其他类型的数据时是错误写法,系统会报错。
System.out.println(list);
系统默认输出//[];
扩展
对于Arraylist集合来说,直接打印得到的不是地址值,而是内容。如果内容是空那么得到的是[];。向集合当中添加一些数据,需要用到add方法。 list.add(“淅淅同学”);//[淅淅同学];
arraylist集合基本使用实践
package cn.demo02;
import java.util.ArrayList;
public class array02 {
public static void main(String[] args) {
//创建一个Arraylist集合,集合的名称是list,里面装的全都是String类型的字符串
//备注;从JDK1.7+开始,等号右侧的尖括号内部可以不写内容,但是左侧<>本身还是要写的,系统会默认一样
ArrayList<String> list=new ArrayList<>();
System.out.println(list);//[];扩展:对于Arraylist集合来说,直接打印得到的不是地址值,而是内容
//如果内容是空那么得到的是[];
//向集合当中添加一些数据,需要用到add方法。
list.add("淅淅同学");//[淅淅同学];
list.add("淅淅同学");
list.add("淅淅同学");
list.add("淅淅同学");//[淅淅同学, 淅淅同学, 淅淅同学, 淅淅同学];
System.out.println(list);
}
}
arraylist集合基本实践结果
三、arraylist集合当中常用的方法和遍历
在arraylist集合当中有很多常用的方法,这些方法都可以通过API找到,并且其中也都有中文的说明。
下面整理一些常用的方法;
Arraylist当中的常用方法有:
1.(添加)public boolean add(E e):向集合当中添加元素,参数的类型和泛型一致。
2.(读取)public E get(int index):从集合当中获取元素,参数是索引编号,编号从0开始,返回值就是对应位置的元素。
3.(删除)public E remove(int index):从集合当中删除元素,参数是索引编号,返回值就是被删除掉的元素。
4.public int size():没有参数,获取集合的尺寸长度,返回值是集合中包含的元素个数。
既然掌握四个方法了,那么我们就可以遍历集合了。
常用方法实践
package cn.demo02;
import java.util.ArrayList;
public class arraylistmethod {
public static void main(String[] args) {
ArrayList<String> list=new ArrayList<>();
//向集合中添加元素
boolean success=list.add("淅淅");//在list集合里添加“淅淅”,并把返回值赋予success代表添加是否成功;
System.out.println(list);//[淅淅]
System.out.println("添加的方法是否成功"+success);//添加的方法是否成功true
list.add("淅淅同学");
list.add("爱学习");
list.add("爱放风");
System.out.println(list);//[淅淅, 淅淅同学, 爱学习, 爱放风]
//从集合中读取元素
String name=list.get(1);
System.out.println("第1号索引的位置:"+name);//第1号索引的位置:淅淅同学
//删除集合中的元素
String whoremoved = list.remove(2);//删除二号位置元素,并把被删除元素作为返回值赋予whoremoved变量
System.out.println("被删除的人是:"+whoremoved);//被删除的人是:爱学习
System.out.println(list);//[淅淅, 淅淅同学, 爱放风]
//得到集合长度尺寸,也就是其中元素个数
int size =list.size();
System.out.println("集合元素的个数是:"+size);//集合元素的个数是:3
}
}
常用方法实践结果
遍历集合实践
package cn.demo02;
import java.util.ArrayList;
public class arraylisteach {
public static void main(String[] args) {
ArrayList<String> list=new ArrayList<>();
list.add("我爱中国");
list.add("我比你更爱中国");
list.add("我比你更更爱中国");
//遍历集合
for (int i=0;i<list.size();i++)
{
System.out.println(list.get(i));
}
}
}
遍历集合实践结果
四、arraylist集合存储基本数据类型
由于arraylist里面只能存放引用型:String,不能存储基本类型比如整型浮点型字符型这样的,那么在我们需要存储基本数据类型的时候**怎么解决?**如果向集合Arraylist当中存放基本类型数据,必须使用基本类型对应的包装类。包装类就是给需要基本数据类型数据套一个壳子。
基本类型(有:byte short int long float double char boolean)
包装类(引用类型,包装类都位于java.long包下,有:Byte Short Integer Long Float Double Character Boolean)
扩展
从JDK1.5+开始,支持自动装箱、自动拆箱。自动装箱:基本类型–>包装类型;自动拆箱:包装类型–>基本类型;
存储基本数据类型实践
package cn.demo02;
import sun.rmi.log.LogInputStream;
import java.util.ArrayList;
public class arraylistbasic {
public static void main(String[] args) {
ArrayList<Integer> list1=new ArrayList<>();
list1.add(333);
list1.add(666);
list1.add(999);
System.out.println(list1);//[333, 666, 999]
int num=list1.get(2);
System.out.println("第2号元素是:"+num);//第2号元素是:999
}
}
存储基本数据类型实践结果
五、练习
练习题1
生成6个1-33之间的随机整数,添加到集合,并遍历集合。
思路:
1.需要存储6个数字,创建一个集合;
2.产生随机数需要用到random;
3.用循环六次来产生6个随机数字用for循环;
4.循环内调用r.nextTnt(int n),参数是33,也就是0-32;
5.把数字添加到集合中:add;
6.遍历集合用到for,size,get;
代码:
package cn.demo02;
import java.util.ArrayList;
import java.util.Random;
public class arraylistrandom {
public static void main(String[] args) {
ArrayList<Integer> list=new ArrayList<>();
Random r=new Random();
for(int i=0;i<6;i++)
{
int num=r.nextInt(33)+1;
list.add(num);
}
//遍历集合
for(int i=0;i<list.size();i++){
System.out.println(list.get(i));
}
}
}
运行结果:
练习题2
自定义4个学生对象,添加到集合,并遍历。
思路:
1.自定义学生类,里面有四个部分。
2.创建一个集合用来存储学生对象。泛型;
3.根据类创建4个学生对象并且赋值。
4.将4个学生对象添加到集合当中:add;
5.遍历集合:for,size,get…
代码:
package cn.demo02;
public class students {
private String name;
private int age;
public students() {
}
public students(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
package cn.demo02;
import java.util.ArrayList;
public class arrayliststudents {
public static void main(String[] args) {
ArrayList<students> list=new ArrayList<>();
students one=new students("张毅",30);
students two=new students("富大龙",30);
students three=new students("吴彦祖",30);
students four=new students("彭于晏",30);
list.add(one);
list.add(two);
list.add(three);
list.add(four);
for (int i = 0; i < list.size(); i++) {
students stu= list.get(i);
System.out.println("姓名:"+stu.getName()+",年龄:"+stu.getAge());
}
}
}
运行结果:
练习题3
按指定格式遍历集合字符串;定义以指定格式打印集合的方法(arraylist类型作为参数),使用{}括起集合,使用@分隔每一个元素。格式参照(元素@元素@元素)。也就是正常情况下我们使用sout(list)打印集合,打印出来的形式为【10,20,30】,现在要求自己定义一个比如叫做printarraylist(list),要求打印出来的形式为{10@20@30}.
思路:
定义方法的三要素:
返回值类型:只是进行,没有运算,没有结果所以用void;
打印方法名称:printarraylist;
参数列表:Arraylist;
代码:
package cn.demo02;
import java.util.ArrayList;
public class arraylistprint {
public static void main(String[] args) {
ArrayList<String> list=new ArrayList<>();
list.add("喜羊羊");
list.add("美羊羊");
list.add("懒羊羊");
list.add("费羊羊");
list.add("慢羊羊");
System.out.println(list);//[喜羊羊, 美羊羊, 懒羊羊, 费羊羊, 慢羊羊]
printarraylist(list);//{喜羊羊@美羊羊@懒羊羊@费羊羊@慢羊羊}
}
public static void printarraylist(ArrayList<String> list) {
System.out.print("{");
for (int i = 0; i < list.size(); i++) {
String name=list.get(i);
if(i==list.size()-1){
System.out.print(name+"}");
}else{
System.out.print(name+"@");}
}
}
}
运行结果:
练习题4
筛选集合中的随机数。首先用一个大集合存入随机数字,然后筛选其中的偶数元素,放到小集合当中。要求使用自定义的方法来实现筛选。
思路:
1.需要创建一个集合,用来存储数字;
2.随机数字就用random nextInt;
3.循环20次,把随机数字放入大集合,for,add。
4.自定义一个方法用来进行筛选,得到小集合。
三要素:
返回值类型:arraylist小集合(里面元素个数不确定);
方法名称:getsmalllist;
参数列表:arraylist大集合(装着20个随机数字);
5.判断是否偶数:num%2==0;
6.如果是偶数就放到小集合里面,否则不放;
代码:
package cn.demo02;
import java.util.ArrayList;
import java.util.Random;
public class arraylistxiti4 {
public static void main(String[] args) {
ArrayList<Integer> biglist=new ArrayList<>();
Random r=new Random();
for (int i = 0; i < 20; i++) {
int num=r.nextInt(100);
biglist.add(num);
}
ArrayList<Integer> smalllist=getsmalllist(biglist);
System.out.println("偶数总个数:"+smalllist.size());
for (int i = 0; i < smalllist.size(); i++) {
System.out.println(smalllist.get(i));
}
}
//这个方法接受大集合参数返回小集合参数
public static ArrayList<Integer> getsmalllist (ArrayList<Integer> biglist) {
ArrayList<Integer> smalllist=new ArrayList<>();
for (int i = 0; i < biglist.size(); i++) {
int num=biglist.get(i);
if(num%2==0){
smalllist.add(num);
}
}
return smalllist;
}
}