一、集合概述
与数组类似,也是一种容器,用于装数据。(数组类型长度固定,增删操作不方便。)集合类型不固定,大小可变,非常适合元素个数不确定,且要进行增删操作的业务,同时集合也提供了更多的API。
1、ArrayList集合(一种支持索引的集合)
对象获取:ArrayList list = new ArrayList();
添加元素的方法:publice boolean add(E e)
在某索引处插入元素:publice void add(int index,E element)
2、对于泛型的支持
ArrayList
ArrayList
ArrayList
ArrayList
public class text {
public static void main(String[] args) {
//创建ArrayList对象
ArrayList list = new ArrayList();
//添加任意类型的元素
list.add("java");
list.add("中国");
list.add(false);
list.add(12.2);
list.add(97);
//①public E get(int index) 返回指定索引处的元素值
System.out.println(list.get(2));//false
//②public int size() 返回集合中的元素个数
System.out.println(list.size());//5
//遍历集合
for (int i = 0; i < list.size(); i++) {
System.out.print(list.get(i) + "t");
}
System.out.println();
//③public E remove(int index) 删除指定索引处的元素,返回被删除的元素
System.out.println(list);//[java, 中国, false, 12.2, 97]
Object e = list.remove(1);
System.out.println(list + "被删除的是:" + e);//[java, false, 12.2, 97]被删除的是:中国
//④public boolean remove(Object o) 删除指定的元素,返回删除是否成功(存在相同元素默认删除第一个)
list.add(4, "java");
System.out.println(list);
System.out.println(list.remove("java")); //true
System.out.println(list);//[false, 12.2, java, 97]
//⑤public E set(int index, E element) 修改指定索引处的元素,返回被修改的元素
System.out.println(list + "被修改的是:" + list.set(3, 65));//[false, 12.2, java, 65]被修改的是:97
}
}
4、ArrayList集合案例
遍历删除元素:
import java.util.ArrayList;
public class text {
public static void main(String[] args) {
ArrayList
price.add(98);
price.add(77);
price.add(66);
price.add(66);
price.add(89);
price.add(79);
price.add(50);
price.add(100);
price.add(54);
price.add(66);
price.add(88);
System.out.println(price);
for (int i = 0; i < price.size(); i++) {
if (price.get(i)<80){
price.remove(i);
i--;//防止元素自动补位出现bug
}
}
System.out.println(price);
}
}
存储自定义类型的对象:
public class Movie {
private String name;
private double score;
private String actor;
public Movie() {
}
public Movie(String name, double score, String actor) {
this.name = name;
this.score = score;
this.actor = actor;
}
public void setName(String name) {
this.name = name;
}
public void setScore(double score) {
this.score = score;
}
public void setActor(String actor) {
this.actor = actor;
}
public String getName() {
return name;
}
public double getScore() {
return score;
}
public String getActor() {
return actor;
}
}
import java.util.ArrayList;
public class test {
public static void main(String[] args) {//栈内存加载main方法
ArrayList
Movie m1 = new Movie("《肖生客的救赎》", 9.7, "罗宾逊");//在堆内存创建对象并返回地址给栈内存的变量m1
Movie m2 = new Movie("《霸王别姬》", 9.5, "张国荣");
Movie m3 = new Movie("《阿甘正传》", 9.4, "汤姆");
Movies.add(m1);//将m1中的地址存储到Movies集合,因此集合中存储的不是对象,而是堆内存中对象返回的地址
Movies.add(m2);
Movies.add(m3);
for (int i = 0; i < Movies.size(); i++) {
Movie m = Movies.get(i);
System.out.println(m.getName() + m.getScore() + m.getActor());//通过Movies中定义的方法实现访问
}
}
}
元素搜索:
public class Student {
private String name;
private String id;
private int age;
private String banji;
public Student() {
}
public void setName(String name) {
this.name = name;
}
public void setId(String id) {
this.id = id;
}
public void setAge(int age) {
this.age = age;
}
public void setBanji(String banji) {
this.banji = banji;
}
public String getName() {
return name;
}
public String getId() {
return id;
}
public int getAge() {
return age;
}
public String getBanji() {
return banji;
}
public Student(String name, String id, int age, String banji) {
this.name = name;
this.id = id;
this.age = age;
this.banji = banji;
}
}
public class test {
public static void main(String[] args) {//栈内存加载main方法
ArrayList
Student s1 = new Student("叶孤城","20180302",23,"护理一班");
Student s2 = new Student("东方不败","20180303",23,"推拿二班");
Student s3 = new Student("西门吹雪","20180304",26,"中药学四班");
Student s4 = new Student("梅超风","20180305",26,"神经科二班");
list.add(s1);
list.add(s2);
list.add(s3);
list.add(s4);
Scanner sc = new Scanner(System.in);
while (true){
System.out.print("请输入学号:");
String userid = sc.next();
Student student1 = seach(list,userid);
if(student1 == null){
System.out.println("查无此人");
break;
}
System.out.println("学号:"+student1.getId()+"t"+"姓名:"+student1.getName()+"t"+"年龄:"+student1.getAge()+"t"+"班级:"+student1.getBanji());
break;
}
}
public static Student seach(ArrayList
for (int i = 0; i < list.size(); i++) {
Student student1 = list.get(i);
if(student1.getId().equals(userid)){
student1 = list.get(i);
return student1;
}
}
return null;
}
}



