集合基础
集合概述
数组长度固定,适应不了变化的需求;
集合提供一种空间可变的存储模型,存储的数据容量可以发生改变;
ArrayList<E>:
可以调整大小的数组实现;
<E>是一种特殊的数据类型,泛型;
在E出现的地方使用数据类型替换就行;
ArrayList构造方法和添加方法
public ArrayList():创建一个空的集合对象;
public boolean add(E e):将指定元素追加到集合末尾;
public void add(int Index,E element):在此集合指定位置插入指定的元素;
示例:
public class ArrayListDemo01 {
public static void main(String[] args) {
//创建一个集合对象
ArrayList<String> array = new ArrayList<String>();
//将指定元素添加到集合末尾
array.add("hello");
array.add("world");
array.add("java");
//输出集合
System.out.println(array);
}
}
指定位置添加:
public class ArrayListDemo01 {
public static void main(String[] args) {
//创建一个集合对象
ArrayList<String> array = new ArrayList<String>();
//将指定元素添加到集合末尾
array.add("hello");
array.add("world");
array.add("java");
//指定位置添加元素
array.add(1,"javase");
//输出集合
System.out.println(array);
}
}
由此可见,ArrayList包含前后中括号,以及各元素之间的逗号;
当集合中插入元素索引超过原有索引,不可行,即索引为0,1,2时可以添加在索引3但在索引4就会报错(索引越界);
删除与修改:
public boolean remove(Object o):删除指定的元素,返回删除是否成功
public E remove(int index):删除指定索引处的元素,返回被删除的元素
public E set(int index,E element):修改指定索引处的元素,返回被修改的元素
public E get(int index):返回指定索引处的元素
public int size():返回集合中的元素的个数;
public class ArrayListDemo02 {
public static void main(String[] args) {
ArrayList<String> array = new ArrayList<String>();
//添加元素
array.add("hello");
array.add("world");
array.add("java");
//删除指定的元素,返回删除是否成功
System.out.println("返回值:" + array.remove("world"));
System.out.println("此时集合:" + array);
//删除指定索引处的元素,返回被删除的元素(已经删除world,索引只有0,1)
System.out.println("返回值:" + array.remove(0));
System.out.println("此时集合:" + array);
//修改指定索引处的元素,返回被修改的元素(只剩java)
System.out.println("返回值:" + array.set(0,"javase"));
System.out.println("此时集合:" + array);
//返回指定索引处的元素
System.out.println("返回值:" + array.get(0));
//指引越界
// System.out.println(array.get(2));
//返回集合中的元素的个数
System.out.println(array.size());
}
}
//指引越界 System.out.println(array.get(2));
案例:存储字符串并遍历
创建一个字符串的集合,存储3个字符串元素,使用程序实现遍历该集合
public class ArrayListTest01 {
public static void main(String[] args) {
//创建集合
ArrayList<String> array = new ArrayList<String>();
//添加字符串对象
array.add("叶凡");
array.add("石昊");
array.add("楚风");
//遍历通用格式
for (int i = 0; i<array.size(); i++){
String s = array.get(i);
System.out.println(s);
}
}
案例:存储学生对象并遍历
创建一个存储学生对象的集合,存储学生对象,实用程序实现在控制台遍历该集合;
对ArrayList<E>中<E>是一种特殊的数据类型,泛型的实现,
学生类:
public class Student {
private String name;
private int age;
public Student(){}
public Student(String name,int age){
this.name = name;
this.age = age;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return age;
}
}
main函数:
public class ArrayListTest02 {
public static void main(String[] args) {
//创建集合对象
ArrayList<Student> array = new ArrayList<Student>();
//创建学生对象
Student s1 = new Student("Jack",19);
Student s2 = new Student("Tom",91);
Student s3 = new Student("Rose",16);
//添加入集合
array.add(s1);
array.add(s2);
array.add(s3);
//通用格式遍历
for (int i = 0; i < array.size(); i++){
Student s = array.get(i);
System.out.println(s.getName() + "," + s.getAge());
}
}
}
案例:存储学生对象并遍历
创建一个存储学生对象的集合,存储学生对象,实用程序实现在控制台遍历该集合;与上一个案例不同,学生数据来源于键盘录入;
学生类:为了便于键盘输入,将年龄也设为String类型
public class Student {
private String name;
private String age;
public Student(){}
public Student(String name,String age){
this.name = name;
this.age = age;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setAge(String age) {
this.age = age;
}
public String getAge() {
return age;
}
}
main函数:
public class ArrayListTest {
public static void main(String[] args) {
//创建集合对象
ArrayList<Student> array = new ArrayList<Student>();
//w为了提高代码复用性,使用方法改进程序
addStudent(array);
addStudent(array);
addStudent(array);
//遍历集合
for (int i = 0; i < array.size(); i++){
Student s = array.get(i);
System.out.println(s.getName() + "," + s.getAge());
}
}
public static void addStudent(ArrayList<Student> array){
//键盘录入学生数据
Scanner sc = new Scanner(System.in);
System.out.println("请输入学生姓名:");
String name = sc.nextLine();
System.out.println("请输入学生年龄:");
String age = sc.nextLine();
//创建学生对象,把键盘录入数据赋值给其成员变量
Student s = new Student();
s.setName(name);
s.setAge(age);
//往集合中添加
array.add(s);
}
}