集合
1.集合的由来?
之前的容器: 数组 StringBuilder StringBuffer
一个集合中可以装不同的数据。
2.ArrayList的添加方法
/*
* 1.ArrayList 类
* 构造: ArrayList()
* 调用空参构造创建对象:ArrayList al = new ArrayList();
* 2.添加方法:
* add(E e) 直接给集合中添加元素
* add(int index , E e) 在指定所以出添加元素
*/
3. //static void reverse(List<?> list) //集合反转
Collections.reverse(al3);
for (int i = 0; i < al3.size(); i++) {
System.err.println(al3.get(i));
}
public class ArrayListTest {
public static void main(String[] args) {
//有黄线(警告:暂时没风险,建议你确定一下,ArrayList容器,只装一种数据类型)
ArrayList al = new ArrayList();
al.add("abc");
al.add(20);
al.add(true);
System.out.println(al); //[abc, 20, true]
ArrayList<String> al2 = new ArrayList<>();//只要JDK为1.7 后面<>不用写
al2.add("aaa");
//al2.add(123); //报错:只能装String类型
al2.add("bbb");
al2.add("ccc");
al2.add(1, "ooo");
System.out.println(al2);
}
}
3.增删改查的方法
import java.util.ArrayList;
/*
* 获取元素
* public E get(int index):返回指定索引处的元素
* 集合长度
* public int size():返回集合中的元素的个数
* 删除元素
* public boolean remove(Object o):删除指定的元素,返回删除是否成功
* public E remove(int index):删除指定索引处的元素,返回被删除的元素
* 修改元素
* public E set(int index,E element):修改指定索引处的元素,返回被修改的元素
*/
public class ArrayListDemo2 {
public static void main(String[] args) {
//创建集合对象
ArrayList<String> array = new ArrayList<String>();
//添加元素
array.add("hello");
array.add("world");
array.add("java");
//public E get(int index):返回指定索引处的元素
//System.out.println("get:"+array.get(0));
//System.out.println("get:"+array.get(1));
//System.out.println("get:"+array.get(2));
//public int size():返回集合中的元素的个数
//System.out.println("size:"+array.size());
//public boolean remove(Object o):删除指定的元素,返回删除是否成功
//System.out.println("remove:"+array.remove("world"));//true
//System.out.println("remove:"+array.remove("world"));//false
//public E remove(int index):删除指定索引处的元素,返回被删除的元素
//System.out.println("remove:"+array.remove(0));
//public E set(int index,E element):修改指定索引处的元素,返回被修改的元素
System.out.println("set:"+array.set(1, "android"));
//输出
System.out.println("array:"+array);
}
}
4.集合的遍历
1)获取长度 int arraylist.size()
2) 获取元素 E get(int index);
/*
* ArrayList集合的遍历
* 通过size()和get()配合实现的
*/
public class ArrayListDemo3 {
public static void main(String[] args) {
//创建集合对象
ArrayList<String> array = new ArrayList<String>();
//添加元素
array.add("hello");
array.add("world");
array.add("java");
//最标准的用法
for(int x=0; x<array.size(); x++) {
String s = array.get(x);
System.out.println(s);
}
}
}
5.练习:
给定一个字符串数组:{“张三丰”,“宋远桥”,“张无忌”,“殷梨亭”“张翠山”,“莫声谷”}
将数组中的元素添加到集合中
把所有姓张的人员打印到控制台上
参考:
/*
* 给定一个字符串数组:{“张三丰”,“宋远桥”,“张无忌”,“殷梨亭”,“张翠山”,“莫声谷”},将数组中的元素添加到集合中,并把所有姓张的人员打印到控制台上。
*
* 分析:
* A:定义字符串数组
* B:创建集合对象
* C:遍历字符串数组,获取到每一个字符串元素
* D:把获取到的字符串元素添加到集合
* E:遍历集合
* 要判断每一个字符串元素是否以"张"开头,如果是,就输出在控制台
*/
public class ArrayListTest2 {
public static void main(String[] args) {
//定义字符串数组
String[] strArray = {"张三丰","宋远桥","张无忌","殷梨亭","张翠山","莫声谷"};
//创建集合对象
ArrayList<String> array = new ArrayList<String>();
//遍历字符串数组,获取到每一个字符串元素
for(int x=0; x<strArray.length; x++) {
//把获取到的字符串元素添加到集合
array.add(strArray[x]);
}
//遍历集合
for(int x=0; x<array.size(); x++) {
String s = array.get(x);
//要判断每一个字符串元素是否以"张"开头,如果是,就输出在控制台
if(s.startsWith("张")) {
System.out.println(s);
}
}
}
}
练习:
1.自定义一个学生类,学生中有姓名和年龄属性,生成满参构造与空参构造生成属性对应的getter/setter方法
在测试类中使用满参构造创建三个学生对象,然后将每个学生对象均添加到ArrayList集合中
遍历这个ArrayList集合,依次打印出每个学生的姓名和年龄
练习:创建一个集合,存储学生对象,学生对象的数据来自于键盘录入,最后,遍历集合
public class Student {
private String name;
private String age;
public Student() {
}
public Student(String name, String age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}
/*
* 创建一个集合,存储学生对象,学生对象的数据来自于键盘录入,最后,遍历集合
*
* 注意:为了方便使用,我把学生类中的所有成员定义为String类型
*
* 分析:
* A:定义学生类
* B:创建集合对象
* C:键盘录入数据,创建学生对象,把键盘录入的数据赋值给学生对象的成员变量
* D:把学生对象作为元素存储到集合中
* E:遍历集合
*
*/
public class StudentDemo {
public static void main(String[] args) {
//创建集合对象
ArrayList<Student> array = new ArrayList<Student>();
//调用方法
addStudent(array);
addStudent(array);
addStudent(array);
//遍历集合
for(int x=0; x<array.size(); x++) {
Student s = array.get(x);
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(name,age);
//把对象添加进集合
array.add(s);
}
}