集合的基本使用
集合存储数据类型的特点
集合能直接存储引用数据类型,不能直接存储基本数据类型,可以把基本数据类型变成对应的包装类来存储

集合和数组的对比

ArrayList
java
package com.itheima.listdemo;
import java.util.ArrayList;
public class ArrayLiatDemo1 {
public static void main(String[] args) {
//1.创建集合的对象
//泛型:限定集合中存储数据的类型
//ArrayList<String> list = new ArrayLiat<String>();
//JDK7:
//ArrayList<String> list = new ArrayLiat<>();
//此时我们创建的是ArrayList的对象,而ArrayList是Java已经写好的一个类
//这个类在底层做了一些处理
//打印的对象不是地址值,而是集合中存储的数据内容
//在展示的时候会拿[]把所有的数据进行包裹
ArrayList<String> list = new ArrayList<>();
System.out.println(list);
}
}
ArrayList成员方法

boolean add(E,e) 添加元素,返回值表示是否添加成功
(源代码)
java
package com.itheima.listdemo;
import java.util.ArrayList;
public class ArrayLiatDemo2 {
public static void main(String[] args) {
//1.创建一个集合
ArrayList<String> list = new ArrayList<>();
//2.添加元素
list.add("aaa");
list.add("aaa");
list.add("bbb");
list.add("ccc");
//3.输出结果
System.out.println(list);
}
}
(运行结果截图)

boolean remove(E e) 删除指定元素,返回值表示是否删除成功
(源代码)
java
package com.itheima.listdemo;
import java.util.ArrayList;
public class ArrayLiatDemo3 {
public static void main(String[] args){
//1.创建一个集合
ArrayList<String> list = new ArrayList<>();
//2.增加元素
list.add("aaa");
list.add("aaa");
list.add("bbb");
list.add("ccc");
//3.删除元素
boolean result = list.remove("aaa");
System.out.println(result);
System.out.println(list);
}
}
(运行结果截图)

E remove(int index) 删除指定索引的元素,返回被删除元素
(源代码)
java
package com.itheima.listdemo;
import java.util.ArrayList;
public class ArrayLiatDemo4 {
public static void main(String[] args) {
//1.创建一个集合
ArrayList<String> list = new ArrayList<>();
//2.增加元素
list.add("aaa");
list.add("aaa");
list.add("bbb");
list.add("ccc");
//3.删除元素
String str = list.remove(0);
System.out.println(str);
System.out.println(list);
}
}
(运行结果截图)

E set(int index,E e) 修改指定索引下的元素,返回原来的元素
(源代码)
java
package com.itheima.listdemo;
import java.util.ArrayList;
public class ArrayLiatDemo5 {
public static void main(String[] args) {
//1.创建一个集合
ArrayList<String> list = new ArrayList<>();
//2.增加元素
list.add("aaa");
list.add("aaa");
list.add("bbb");
list.add("ccc");
//3.修改元素
String str = list.set(1,"ddd");
System.out.println(str);
System.out.println(list);
}
}
(运行结果截图)

E get(int index) 获取指定索引的元素
(源代码)
java
package com.itheima.listdemo;
import java.util.ArrayList;
public class ArrayLiatDemo6 {
public static void main(String[] args) {
//1.创建一个集合
ArrayList<String> list = new ArrayList<>();
//2.添加元素
list.add("aaa");
list.add("aaa");
list.add("bbb");
list.add("ccc");
//3.查询元素
String s = list.get(0);
System.out.println(s);
System.out.println(list);
}
}
(运行结果截图)

int size() 集合的长度,也就是集合中元素的个数
(源代码)
java
package com.itheima.listdemo;
import java.util.ArrayList;
public class ArrayLiatDemo7 {
public static void main(String[] args) {
//1.创建一个集合
ArrayList<String> list = new ArrayList<>();
//2.添加元素
list.add("aaa");
list.add("aaa");
list.add("bbb");
list.add("ccc");
//遍历
for (int i = 0; i < list.size(); i++) {
//i 索引
//list.get(i) 元素
String str = list.get(i);
System.out.println(str);
}
}
}

(运行结果截图)

集合练习-添加字符串和整数并遍历
练习:集合的遍历方式

(源代码)
java
package com.itheima.test;
import java.util.ArrayList;
public class Test1 {
public static void main(String[] args) {
//1.创建集合
ArrayList<String> list = new ArrayList<String>();
//2.添加元素
list.add("aaa");
list.add("bbb");
list.add("ccc");
list.add("ddd");
//3.遍历
System.out.print("[");
for (int i = 0; i < list.size(); i++) {
if(i == list.size() - 1){
System.out.print(list.get(i));
}else{
System.out.print(list.get(i) + ",");
}
}
System.out.println("]");
}
}
(运行结果截图)

基本数据类型对应的包装类

练习:添加数字并遍历

(源代码)
java
package com.itheima.test;
import java.util.ArrayList;
public class Test2 {
public static void main(String[] args) {
//1.创建集合
ArrayList<Integer> list = new ArrayList<>();
//2.添加元素
//JDK5以后 int Integer 之间是可以互相转化的
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
//3.遍历集合
System.out.print("[");
for (int i = 0; i < list.size(); i++) {
if(i == list.size() - 1){
System.out.print(list.get(i));
}else{
System.out.print(list.get(i) + ",");
}
}
System.out.println("]");
}
}
(运行结果截图)

集合练习-添加学生对象并遍历的两个练习
练习:添加学生对象并遍历

(源代码)
java
package com.itheima.test;
import java.util.ArrayList;
public class Test3 {
public static void main(String[] args){
//1.创建集合
ArrayList<Student> list = new ArrayList<>();
//2.创建学生对象
Student s1 = new Student("zhangsan",23);
Student s2 = new Student("lisi",24);
Student s3 = new Student("wangwu",25);
//3.添加元素
list.add(s1);
list.add(s2);
list.add(s3);
//4.遍历集合
for (int i = 0; i < list.size(); i++) {
//i 索引 list.get(i) 元素/学生对象
Student stu = list.get(i);
System.out.println(stu.getName() + "," + stu.getAge());
}
}
}
java
package com.itheima.test;
public class Student {
//1.私有化成员变量
//2.空参构造方法
//3.带全部参数的构造方法
//4.get/set方法
private String name;
private int age;
public Student() {
}
public Student(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;
}
}
(运行结果截图)

练习:添加学生对象并遍历(改)

(源代码)
java
package com.itheima.test;
import java.util.ArrayList;
import java.util.Scanner;
public class Test4 {
public static void main(String[] args) {
//1.创建集合
ArrayList<Student> list = new ArrayList<>();
//2.键盘录入学生的信息并添加到集合当中
Scanner sc = new Scanner(System.in);
for(int i = 0 ; i < 3 ; i++){
Student s = new Student();
System.out.println("请输入学生姓名");
String name = sc.next();
System.out.println("请输入学生年龄");
int age = sc.nextInt();
//把name和age赋值给学生对象
s.setName(name);
s.setAge(age);
//把学生对象添加到集合中
list.add(s);
}
//3.遍历
for (int i = 0; i < list.size(); i++) {
//i 索引 list.get(i) 元素/学生对象
Student stu = list.get(i);
System.out.println(stu.getName() + "," + stu.getAge());
}
}
}
java
package com.itheima.test;
public class Student {
//1.私有化成员变量
//2.空参构造方法
//3.带全部参数的构造方法
//4.get/set方法
private String name;
private int age;
public Student() {
}
public Student(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;
}
}
(运行结果截图)

集合练习-查找用户是否存在
练习:添加用户对象并判断是否存在(1)

(源代码)
java
package com.itheima.test;
import java.util.ArrayList;
public class Test5 {
public static void main(String[] args) {
ArrayList<User> list = new ArrayList<>();
User u1 = new User("zhangsan","001","123456");
User u2 = new User("lisi","002","123qwe");
User u3 = new User("wangwu","003","321456");
list.add(u1);
list.add(u2);
list.add(u3);
boolean flag = contains(list,"001");
System.out.println(flag);
}
public static boolean contains(ArrayList<User> list, String ID) {
for (int i = 0; i < list.size(); i++) {
User u = list.get(i);
String uid = u.getID();
if (uid.equals(ID)) {
return true;
}
}
return false;
}
}
java
package com.itheima.test;
public class User {
private String username;
private String ID;
private String password;
public User() {
}
public User(String username, String ID, String password) {
this.username = username;
this.ID = ID;
this.password = password;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getID() {
return ID;
}
public void setID(String ID) {
this.ID = ID;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}

(运行结果截图)

练习:添加用户对象并判断是否存在(2)

(源代码)
java
package com.itheima.test;
import java.util.ArrayList;
public class Test6 {
public static void main(String[] args) {
ArrayList<User> list = new ArrayList<>();
User u1 = new User("zhangsan","001","123456");
User u2 = new User("lisi","002","123qwe");
User u3 = new User("wangwu","003","321456");
list.add(u1);
list.add(u2);
list.add(u3);
int index = getIndex(list,"001");
System.out.println(index);
}
public static int getIndex(ArrayList<User> list, String ID) {
for (int i = 0; i < list.size(); i++) {
User u = list.get(i);
String uid = u.getID();
if (uid.equals(ID)) {
return i;
}
}
return -1;
}
}
java
package com.itheima.test;
public class User {
private String username;
private String ID;
private String password;
public User() {
}
public User(String username, String ID, String password) {
this.username = username;
this.ID = ID;
this.password = password;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getID() {
return ID;
}
public void setID(String ID) {
this.ID = ID;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}

(运行结果截图)

集合练习-返回多个数据
练习:添加手机对象并返回要求的数据

(源代码)
java
package com.itheima.test;
import java.util.ArrayList;
public class Test8 {
public static void main(String[] args) {
//1.创建集合对象
ArrayList<Phone> list = new ArrayList<>();
//2.创建手机的对象
Phone p1 = new Phone("小米",1000);
Phone p2 = new Phone("苹果",8000);
Phone p3 = new Phone("锤子",2999);
//3.添加数据
list.add(p1);
list.add(p2);
list.add(p3);
//4.调用方法
ArrayList<Phone> phoneInfoList = getPhoneInfo(list);
//5.遍历集合
for (int i = 0; i < phoneInfoList.size(); i++) {
Phone phone = phoneInfoList.get(i);
System.out.println(phone.getBrand() + "," + phone.getPrice());
}
}
//技巧:若谷我们要返回多个数据,可以把这些数据先放到一个容器(集合 数组)中,再把容器返回
public static ArrayList<Phone> getPhoneInfo(ArrayList<Phone> list) {
//定义一个集合用于存储价格低于3000的手机对象
ArrayList<Phone> resultList = new ArrayList<>();
//遍历集合1
for (int i = 0; i < list.size(); i++) {
Phone p = list.get(i);
int price = p.getPrice();
//如果当前手机的价格低于3000,那么就把手机添加到resultList中
if(price < 3000){
resultList.add(p);
}
}
//返回resultList
return resultList;
}
}
java
package com.itheima.test;
public class Phone {
//Phone属性:品牌,价格
private String brand;
private int price;
public Phone() {
}
public Phone(String brand, int price) {
this.brand = brand;
this.price = price;
}
public String getBrand() {
return brand;
}
public void setBand(String brand) {
this.brand = brand;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
}

(运行结果截图)
