集合ArrayList
一、集合出现的原因
同时存储多个元素,虽然数组同样能做到,但是数组的长度固定,而集合的长度可变,且自动扩容
二、数组和集合的区别
-
数组
- 可以存基本数据类型
- 可以存引用数据类型
- 长度固定
-
集合
- 不可以存基本数据类型
- 可以存引用数据类型
- 如果要存基本数据类型,则要将其包装成类
- 长度可变且自动扩容
三、集合的创建
import java.util.ArrayList;
public class ArrayListDemo1 {
public static void main(String[] args) {
//1.创建集合对象
//泛型:限定集合中存储数据的类型
//ArrayList<String> list = new ArrayList<String>();
//JDK7:
//此时我们创建的是ArrayList的对象,而ArrayList是java已经写好的一个类
//这个类在底层做了一些处理
//打印对象不是地址值,而是集合中存储数据内容
//在展示的时候会拿[]把所有的数据进行包裹
ArrayList<String> list = new ArrayList<>();
System.out.println(list);
}
}
//运行结果:
/*
[]
*/
ArrayList成员方法
(增删改查)
import java.util.ArrayList;
public class ArrayListDemo2 {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
//添加元素
list.add("aaa");
list.add("aaa");
list.add("bbb");
list.add("ccc");
//删除元素
boolean result1 = list.remove("aaa");
System.out.println(result1);
boolean result2 = list.remove("ddd");
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++ )
{
String str2 = list.get(i);
System.out.println(str2);
}
System.out.println(list);
}
}
基本数据类型对应的包装类
四、案例
1.存储基本数据类型并遍历
import java.util.ArrayList;
public class Test {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
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("]");
}
}
2.需求:
定义Javabean类:Phone
Phone属性:品牌,价格
main方法中定义一个集合,存入三个手机对象。
分别为:小米,1000。苹果,8000。锤子,2999;
定义一个方法,将价格低于3000的手机信息返回。
import java.util.ArrayList;
public class Test2 {
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);
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;
}
}
//运行结果:
/*
小米,1000
锤子,2999
*/