1.对象数组和集合类简介:
数组特点:
数组存储的是同一数据类型的数据,并且其长度是固定的组合
ArrayList集合特点:
优点:遍历快,缺点:插入和删除慢
a.只能存储引用数据类型,不能存储基本数据类型
-要想储存基本数数据类型,就要使用基本数据类型的包装类:
-3类8种基本数据类型以及它的包装类:
整型: byte Byte
short Short
int Integer
long Long
浮点型: float Float
double Double
字符型: char Character
布尔型: boolean Boolean
创建对象示例:
ArrayList<E>list = new ArrayList<E>();
ArrayList<Integer>list = new ArrayList<Integer>();
b.Arraylist集合是一种存储同一数据类型,长度不固定,可方便进行删除,增加,修改的集合
c.ArrayList集合是有索引,有序,可以存储重复元素(这一点,在boolean add(E e)方法的源代码里面,总是返回true)
1.1对象数组的练习
存储对象数据类型,存储的是对象对应的地址;
创建对象数组案例:
Student stuArr[] = new Student[3];
案例:创建一个学生对象的数组,存储三个学生对象
步骤:
A:定义学生类
B:创建学生数组
C:创建学生对象
D:存储学生对象到数组中
packagecom.itheima.collection1;
publicclass Student {
private String name;
private int age;
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;
}
//遍历打印学生数组:
public void print()
{
System.out.println("姓名:"+name+"\r"+"年龄:"+age);
System.out.println("--------");
}
public static void main(String[] args) {
//创建学生数组:
Student[] students = new Student[3];
//创建并初始化学生对象
Student s1 = new Student("刘备",55);
Student s2 = new Student("曹操",48);
Student s3 = new Student("孙权",31);
students[0] = s1;
students[1] = s2;
students[2] = s3;
for(int i = 0;i < students.length;i++)
{
students[i].print();
}
}
}
1.2 对象数组的内存图
newStudent(): 放在堆里面
Students:放在栈里面存储了一个指向堆里面new Student() 的地址 001
1.3 List集合类的出现
我们要的是面向对象编程语言,而面向对象编程语言对事物的描述都是通过对象来体现的。为了方便对多个对象进行操作,我们就必须对多个对象进行存储,而要想对多个对象进行存储;就不能是一个基本的变量,而应该是一个容器类型的变量;
到目前为止,我们学习过了哪些容器类型的数据呢:StringBuilder, 数组;
StringBuilder的结果只能是一个字符串类型,不一定满足我们的需求;
目前我们只能选择数组。但是数组又是一个删除困难,固定长度的容器,并不方便进行对象的增删改查
ArrayList集合很好解决了这些问题
1.4 List集合方法:
长度:
int size();
获取:
E get(int index);
增加:
boolean add(E);
void add(int index,E e)
删除:
boolean remove(E);
Eremove(int index):按照索引移除元素
修改:
E set(int index,E newElemnet );参数是目标元素的位置,和代替的新元素。返回的是被修改的元素
判断:
boolean contain(E e):是否包含E元素
booleanisEmpty();集合是否为空
清空:
void clear() 清空元素
另外一些有用的方法:
E[] toArray():将集合内的元素返回对应数据类型的数组
int indexOf(E e) 元素第一次出现的索引
int lastIndexOf(E e) 最后一次出现e的索引值
boolean addAll(Collection c):将一个集合中的所有元素添加到该集合的尾部
案例2:列表的增删改查
publicstatic void main(String[] args) {
//添加
ArrayList<String> list = new ArrayList<>();
list.add("Hello");
list.add(",");
list.add("My");
list.add("name");
list.add("Zeng");
list.add("Yaofeng");
System.out.println("添加元素:"+list.toString());
//获取
String str = list.get(2);
System.out.println("获取得到的元素:"+str);
//删除
String strRemoved = list.remove(3);
System.out.println("被删除的元素:"+strRemoved);
//修改
String strSetted = list.set(4, "Simons");
System.out.println("被修改的元素是:"+strSetted);
//长度
System.out.println("元素长度:"+list.size());
//遍历:
//方法一: for遍历
System.out.println("for遍历:");
for(int x = 0; x < list.size(); x++)
{
String s = list.get(x);//标准方法获取元素
System.out.println(s);
}
System.out.println("---------------");
System.out.println("foreach遍历:");
// foreach()遍历
for(String listItem : list)
{
System.out.println(listItem);
}
}