ArrayList集合
只能放引用类型 基础类型不能放入 如果想放入要把它变成包装类放入
ArrayList成员方法
增: 方法名:boolean add(E e) 说明:添加元素 返回值表示是否添加成功
删: 方法名:boolean remove(E e)说明:删除指定元素 返回值表示是否删除成功
删:方法名:E remove(int index)说明:删除指定索引的元素 返回删除元素
改:方法名:E set(int index,E e)说明:修改指定索引下的元素 返回原来的元素
查:方法名:E get(int index)说明:获取指定索引的元素
查:方法名:int size()说明:集合的长度 也就是集合中元素的个数
代码示例
package com.wide;
import java.util.ArrayList;
public class StringBuilderDemo03 {
public static void main(String[] args) {
//创建一个集合
ArrayList<String> list = new ArrayList<>();
//添加元素
list.add("aaa");
list.add("bbb");
list.add("ccc");
//删除元素
/*boolean result = list.remove("aaa");
System.out.println(result);//成功
boolean result2 = list.remove("bbb");
System.out.println(result2); //失败
//第二种删除方法
String str = list.remove(2);
System.out.println(str);
//修改元素
String result = list.set(1,"ddd");
System.out.println(result);
//查询元素
String s = list.get(0);
System.out.println(s);
*/
//遍历
for (int i = 0; i < list.size(); i++) {
//i 索引
//list.get(i)元素
String str = list.get(i);
System.out.println(str);
}
}
}
练习 集合的遍历方式
需求:
定义一个集合 添加字符串 并进行遍历
遍历格式参照:[元素1,元素2,元素3]
package com.wide;
import java.util.ArrayList;
public class StringBuilderDemo03 {
public static void main(String[] args) {
//创建一个集合
ArrayList<String> list = new ArrayList();
//添加元素
list.add("在吗");
list.add("干嘛");
list.add("你好 我有一个帽衫");
//遍历
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("]");
}
}
练习 添加数字并遍历
需求:
定义一个集合 添加数字 并进行遍历
遍历格式参照:[元素1,元素2,元素3]
数字类型看下面的基本类型对应包装
package com.wide;
import java.util.ArrayList;
public class StringBuilderDemo03 {
public static void main(String[] args) {
//创建一个集合
ArrayList<Integer> list = new ArrayList();
//添加元素
list.add(1);
list.add(2);
list.add(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("]");
}
}
基本类型对应的包装类
byte = Byte
short = Short
char = Character
int = Integer
long = Long
float = Float
double = Double
boolean = Boolean
练习 添加学生对象并遍历
需求:
定义一个集合 添加一些学生对象 并进行遍历
学生类的属性为:姓名,年龄
package com.Test;
public class Student {
//私有化成员变量
//空参构造方法
//带全部参数的构造方法
//get/set方法
private String name;
private int age;
//Alt + Ins
public Student() {
}
//Alt + Ins //ctrl + A
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;
}
}
package com.Test;
import java.util.ArrayList;
public class Test1 {
public static void main(String[] args) {
//创建集合
ArrayList<Student> list = new ArrayList<>();
//创建学生对象
Student s1 = new Student("xiaoming",18);
Student s2 = new Student("xiaogou",7);
Student s3 = new Student("xiaoshi",19);
//添加元素
list.add(s1);
list.add(s2);
list.add(s3);
//遍历集合
for (int i = 0; i < list.size(); i++) {
//i索引 list.get(i)元素/学生对象
Student stu = list.get(i);
System.out.println(stu.getName()+","+stu.getAge());
}
}
}
要求:对象的数据来自键盘录入
package com.Test;
public class Student {
//私有化成员变量
//空参构造方法
//带全部参数的构造方法
//get/set方法
private String name;
private int age;
//Alt + Ins
public Student() {
}
//Alt + Ins //ctrl + A
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;
}
}
package com.Test;
import java.util.ArrayList;
import java.util.Scanner;
public class Test1 {
public static void main(String[] args) {
//创建集合
ArrayList<Student> list = new ArrayList<>();
//键盘录入学生信息并添加到集合当中
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);
}
System.out.println(list.size());
}
}
package com.Test;
import java.util.ArrayList;
import java.util.Scanner;
public class Test1 {
public static void main(String[] args) {
//创建集合
ArrayList<Student> list = new ArrayList<>();
//键盘录入学生信息并添加到集合当中
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);
}
//遍历
for (int i = 0; i < list.size(); i++) {
//i索引 list.get(i)元素/学生对象
Student stu = list.get(i);
System.out.println(stu.getName() + "," + stu.getAge());
}
}
}
练习 添加用户对象并判断是否存在
需求:
1. main方法中定义一个集合 存入三个用户对象
用户属性为:id,username,password
2. 要求:
定义一个方法 根据id查找对应的用户信息
如果存在 返回true
如果不存在 返回false
package com.Test;
public class User {
private String id;
private String username;
private String password;
public User() {
}
public User(String id, String username, String password) {
this.id = id;
this.username = username;
this.password = password;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
package com.Test;
import java.util.ArrayList;
public class Test2 {
public static void main(String[] args) {
//创建集合
ArrayList<User> list = new ArrayList<>();
//2 创建三个用户对象
User u1 = new User("001","Alacan","88888888");
User u2 = new User("002","Alaca","666666");
User u3 = new User("003","Alac","123321");
//把用户对象添加到集合当中
list.add(u1);
list.add(u2);
list.add(u3);
//调用方法查看id是否存在
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)){
//如果找到了直接返回true
return true;
}
}
//当循环结束表示集合里面所有元素都已经比较完毕还没有一样的 返回false
return false;
}
}
如果存在 返回索引 如果不存在 返回-1
package com.Test;
import java.util.ArrayList;
public class Test1 {
public static void main(String[] args) {
//创建集合
ArrayList<User> list = new ArrayList<>();
//2 创建三个用户对象
User u1 = new User("001","Alacan","88888888");
User u2 = new User("002","Alaca","666666");
User u3 = new User("003","Alac","123321");
//把用户对象添加到集合当中
list.add(u1);
list.add(u2);
list.add(u3);
//调用方法查看id是否存在
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)){
//如果找到了直接返回true
return true;
}
}
//当循环结束表示集合里面所有元素都已经比较完毕还没有一样的 返回false
return false;
*/
return getIndex(list,id) >= 0;
}
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)) {
//如果找到了直接返回true
return i;
}
}
//当循环结束表示集合里面所有元素都已经比较完毕还没有一样的 返回false
return -1;
}
}
练习 添加手机对象并返回要求的数据
需求:
定义Javabean类:Phone
Phone属性:品牌 价格
main方法中定义一个集合 存入三个手机对象
分别为:小米,1000。苹果,8000。锤子2999.
定义一个方法,将价格低于3000的手机信息返回
package com.Test;
import java.util.ArrayList;
public class Test3 {
public static void main(String[] args) {
//创建集合对象
ArrayList<Phone> list = new ArrayList<>();
//创建手机对象
Phone p1 = new Phone("小米",1000);
Phone p2 = new Phone("苹果",8000);
Phone p3 = new Phone("锤子",2999);
//添加数据
list.add(p1);
list.add(p2);
list.add(p3);
//调用方法
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){
ArrayList<Phone> resultList = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
Phone p = list.get(i);
int price = p.getPrice();
if (price<3000){
resultList.add(p);
}
}
return resultList;
}
}