集合和数组的对比:
1.长度
数组的长度是固定的,而集合的长度是可变的
2.储存类型
数组可以存基本数据类型,而集合存的是引用数据类型
如果集合要存基本数据类型的话只能是包装类
如下:
在创建集合对象时,我们采用泛型:限定集合中的储存数据类型
通常名为ArrayList<String> List=new Arraylist<>();
我们在创建ArrayList的对象时ArrayList已经写好了一个类,所以需要导包
而且这个类在底层做了一些处理,打印对象不是地址值,而是集合中储存的数据内容
接下俩介绍ArrayList的成员方法:
package Test;
import java.util.ArrayList;
public class Test4 {
public static void main(String[] args) {
//创建一个集合
ArrayList<String> list=new ArrayList<>();
//添加元素
list.add("aaa");
list.add("bbb");
list.add("ccc");
list.add("ddd");
/*
//删除元素
boolean result1=list.remove("aaa");
System.out.println(result1);
String str=list.remove(2);
System.out.println(str);
//修改元素
String result=list.set(1,"yfc");
System.out.println(result);
System.out.println(list);
//查询元素
String s=list.get(3);
System.out.println(s);
//遍历数组
for(int i=0;i<list.size();i++) {
//i索引
String str=list.get(i);
System.out.println(str);
}
*/
}
}
下面是一个例题:
package Test;
import java.util.ArrayList;
import java.util.Scanner;
public class stu {
public static void main(String[] args) {
// 创建集合
ArrayList<stuTest> list = new ArrayList<>();
/*
* // 创建学生对象 stuTest s1 = new stuTest("张三", 22); stuTest s2 = new stuTest("李四",
* 23); stuTest s3 = new stuTest("王五", 24);
*
* //添加元素 list.add(s1); list.add(s2); list.add(s3);
*
* //遍历集合 for(int i=0;i<list.size();i++) { stuTest result=list.get(i);
* System.out.println(result.getName()+","+result.getAge()); }
*/
//创建集合
Scanner sc=new Scanner(System.in);
ArrayList<stuTest> list1 = new ArrayList<>();
//键盘录入学生信息并添加到集合当中
for(int i=0;i<3;i++) {
stuTest s=new stuTest();
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(s.getName());
//System.out.println(s.getAge());
}
//集合里是有学生对象
System.out.println(list.size());
}
}
javabean类
package Test;
public class stuTest {
// 私有化成员属性
private String name;
private int age;
public stuTest() {
}
public stuTest(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;
}
}
可是如果我们将stuTest s=new stuTest();放到外面结果是怎样的呢?
结果全部都会被最后一个输入的给覆盖,因为他们公用的同一个地址值
而放在循环里面相当于建立了是三个对象