集合概述:
提供一种存储空间可变的存储模型,存储的数据容量可以发生改变
集合类有很多,先介绍ArrayList
ArrayList<E>
可调整大小的数组实现
<E>是一种特殊的数据类型,泛型
怎么用?
在出现E的地方我们使用引用数据类型替换即可
举例:ArrayList<String>,ArrayList<Student>
package com.it.heima_01;
import java.util.ArrayList;
/*
* ArrayList
* public ArrayList() 创建一个空白的集合对象
* public boolean add(E e) 将指定的元素追加到此集合的末尾
* public void add (int index,E element) 在此集合任意索引处插入元素
*
*
* */
public class ArrayList_01 {
public static void main(String[] args){
// ① public ArrayList() 创建一个空白的集合对象
ArrayList<String> array=new ArrayList<String>();
System.out.println(array);
// ②public boolean add(E e) 将指定的元素追加到此集合的末尾
// array.add("a");
// System.out.println(array.add("a"));//此处返回的是Boolean类型的值
array.add ("i");
array.add ("love");
array.add ("you");
System.out.println(array);
// ③public void add (int index,E element) 在此集合任意索引处插入元素
// array.add ( 1, "and");
// array.add ( 3, "hello");
// IndexOutOfBoundsException索引越界
array.add ( 4, "world");
System.out.println(array);
}
}
package com.it.heima_01;
import java.util.ArrayList;
public class ArrayList_02 {
public static void main(String[] args) {
ArrayList<String> array=new ArrayList<String>();
array.add("I");
array.add("deem");
array.add("is");
array.add("very");
array.add("perfect");
array.add("idea");
array.add(2,"this");
System.out.println("输出集合元素"+array);
// 删除指定索引处的元素,返回删除是否成功
// array.remove("very");
System.out.println("删除“very”是否成功:"+array.remove("very"));
System.out.println("删除指定元素后的集合:"+array);
// 删除指定索引的元素,并返回被删除元素
System.out.println("被删除元素:"+array.remove(4));
System.out.println("删除指定索引的元素,并返回被删除元素:"+array);
// 修改指定索引处元素,返回被修改元素
// array.set(3,"terrible");
System.out.println("返回被修改元素:"+array.set(4,"method"));
System.out.println("修改指定元素后的集合:"+array);
// 返回指定索引元素
System.out.println("返回指定索引元素:"+ array.get(1));
// IndexOutOfBoundsException 索引超出了集合范围
System.out.println("返回指定索引元素:"+ array.get(5));
// 返回集合中元素的个数(集合的长度)
System.out.println( array.size());
}
}
案例一:存储字符串并遍历
需求:创建一个存储字符串的集合,存储3个字符串元素,使用程序实现在控制台遍历该集合
package com.it.heima_02;
import java.util.ArrayList;
/*
* 需求:创建一个存储字符串的集合,存储3个字符串元素,使用程序实现在控制台遍历该集合
* */
public class ArrayListTest_01 {
public static void main(String[] args) {
ArrayList<String> array=new ArrayList<String>();
array.add("I");
array.add("love");
array.add("you");
System.out.println("集合中有:"+array);
// 输出指定索引的数组元素
// System.out.println(array.get(0));
// 循环输出集合中的元素
for (int i=0;i< array.size();i++)
{
System.out.println(array.get(i));
}
}
}
案例二:存储学生对象
需求:创建一个存储学生对象的集合,存储3个学生对象,使用程序实现在控制台遍历该集合
package com.it.heima_02;
import java.util.ArrayList;
/*
* 需求:创建一个存储学生对象的集合,存储3个学生对象,使用程序实现在控制台遍历该集合
* */
public class ArrayListTest_02 {
public static void main(String[] args) {
ArrayList<Student> array= new ArrayList<Student>();
// 定义三个学生类
Student s1=new Student("张三",18);
Student s2=new Student("李四",22);
Student s3=new Student("王麻子",30);
// s1.setName("张三");
// s1.setAge(1);
s1.show();
s2.show();
s3.show();
// 创建一个集合,将上面的学生类存储在集合中,然后再将集合中字符串遍历出来
array.add(s1);
array.add(s2);
array.add(s3);
// System.out.println(array);
// System.out.println(array.get(2));
// System.out.println(s3.getName()+","+s3.getAge());
for (int i=0;i<array.size();i++)
{
Student s=array.get(i);
// 直接输出s 输出的是三个元素原来所属的地址,我们需要通过该地址去获取里面的值
System.out.println("集合从三个学生对象处获取到了,他们的存储地址:"+s);
System.out.println("用成员方法去获取值:"+s.getName()+","+s.getAge());
}
}
}
案例三:存储学生对象并遍历
需求:创建一个存储学生对象的集合,存储3个学生对象,使用程序实现在控制台遍历该集合
学生的姓名和年龄来自键盘录入
package com.it.heima_02;
import java.util.ArrayList;
import java.util.Scanner;
/*
* 需求:创建一个存储学生对象的集合,存储3个学生对象,使用程序实现在控制台遍历该集合
* 学生的姓名和年龄来自于键盘录入。
*
* 思路
* 创建一个集合,用来存储输入的学生对象
* 建立两个包①姓名字符串②int类型的包
* 将输入的两个元素拼接成字符串
* 然后存储在集合中
* 最后遍历集合中的元素
*
* */
public class ArrayListTest_03 {
public static void main(String[] args) {
// 创建一个集合,用来存储输入的学生对象
ArrayList<Student> array=new ArrayList<Student>();
arrayStudent(array);
arrayStudent(array);
arrayStudent(array);
// 调用三次方法之后,集合中就得到了三组学生对象
// 然后我们在用循环分别输出集合元素
for (int i=0;i<3;i++)
{
Student s=array.get(i);
// System.out.println(array);
System.out.println(s.getName()+","+s.getAge());
}
}
public static void arrayStudent(ArrayList<Student> array)
{
Scanner sc=new Scanner(System.in);
System.out.println("请输入一个名字");
String name=sc.nextLine();
System.out.println("请输入年龄");
int age=sc.nextInt();
Student s=new Student(name,age);
// s.setName(name);
// s.setAge(age);
array.add(s);
}
}