为什么要有集合?
对于数组,我们如果定义了它的长度,但是添加的元素已经最大了,可是还想添加的话,不是不能添加了吗?这个时候就要引入集合了,集合可以自动扩容,也就是向集合添加元素的时候,它的长度会自动扩容,这个也是集合的优势。
数组能存基本数据类型也能存引用数据类型。
int[] arr1=new int[3];
User u1=new User("小红",23);
User u2=new User("小明",23);
User[] useArr=new User[2];
userArr[0]=u1;
userArr[1]=u2;
但是集合和数组可不一样,集合能直接存引用数据类型,不过不能直接存基本数据类型,需要包装成类。
基本数据类型 对应包装类
byte Byte
short Short
char Character
int Integer
long Long
float Float
double Double
boolean Boolean
在API中查找会发现集合是在java.util这个包头里的
import java.util.ArrayList
pinlic class ArratListDemo1{
public static void main(String[] args){
//创建集合的对象
//按照以前创造对象应该是 ArrayList list=new ArrayList();
//不过集合也是个容器,也可以用来存储数据,但是这个容器里面数据类型没法限定啊。
//在以前int[] i=new int[3];这里限定了int类型。
//不过在这里如果集合还想上面那么写肯定是不行的啊
//所以引申出来一个名字叫做泛型
//泛型:在ArrayList查找的API不是ArrayList吗?这里E就是泛型。在类名后也要<>
//如果写ArrayList肯定报错因为基本数据类型不能直接存,要包装成类,下面会解答
//不过这里可以写
ArrayList list=new ArrayList<>();
//之前这样写不过现在优化了ArrayList list=new ArrayList();
//需要知道的是此时创建的对象ArrayList是Java中写好的类,这个类在底层代码做了一些处理
//打印的不是地址值,而是集合中储存的数据内容,展示的时候会用“[]”,把数据进行包裹!
}
}
方法名 说明
1.boolean add(E e) 添加元素,返回值代表是否添加成功
2.boolean remove(E e) 删除指定元素,返回值代表是否删除成功
3.E remove(int index) 删除指定索引元素,返回被删除元素
4.E set(int index,E e) 修改指定索引写的元素,返回原来的元素
5.E get(int index) 获取指定索引的元素
6.int size() 集合的长度,也就是集合中元素的个数
ArrayList list=new ArrayList<>();//创建list对象
boolean flag=list.add("aaa");//验证add方法返回的是boolean类型的
list.add("bbb");//向list集合添加“bbb”
System.out.println(flag);//输出true
System.out.println(list);//输出[aaa,bbb];
ArrayList list=new ArrayList<>();
list.add("aaa");//添加“aaa”
list.add("bbb");//添加“bbb”
boolean flag=list.remove("bbb");//删除“bbb”删除成功返回true
System.out.println(flag);//会打印true
System.out.println(list);//打印“[aaa]”
ArrayList list=new ArrayList<>();
list.add("aaa");//添加"aaa"
list.add("bbb");//添加"bbb"
String flagString=list.remove(1);//"bbb"的索引是1
System.out.println(flagString);//会输出"bbb"
System.out.println(list);//会输出"[aaa]";
修改指定索引写的元素,返回原来的元素
ArrayList list=new ArrayList<>();
list.add("aaa");//添加"aaa"
list.add("bbb");//添加"bbb"
String flagString = list.set(0, "ccc");//把索引为0位置的数据改成“ccc”返回索引为零位置的数据
System.out.println(flagString);//打印"aaa"
System.out.println(list);//打印[ccc,bbb];
获取指定索引的元素
ArrayList list=new ArrayList<>();
list.add("aaa");
list.add("bbb");
String flagString = list.get(0);//返回索引为0位置的数据
System.out.println(flagString);//打印"aaa"
System.out.println(list);打印"[aaa,bbb]"
因为集合不能直接输入基本数据类型,所以要包装成类
基本数据类型 对应包装类
byte Byte
short Short
char Character
int Integer
long Long
float Float
double Double
boolean Boolean
在这里只举一个例子,其他都照葫芦画瓢
ArrayList list=new ArrayList<>();//创造装int的类Integer
list.add(1);//添加1
list.add(2);//添加2
int flagString = list.get(0);//返回1
System.out.println(flagString);//输出1
System.out.println(list);//输出[1,2];
要求使用增删改查等方法
package pdsu_zjh;
import java.awt.dnd.DragGestureEvent;
import java.util.ArrayList;
public class zuoye {
public static void main(String[] args) {
// TODO Auto-generated method stub
ArrayList list=new ArrayList<>();
Strdent s1=new Strdent("zjh",18);//创建对象
Strdent s2=new Strdent("qyc",18);//创建对象
Strdent s3=new Strdent("zt",18);//创建对象
list.add(s1);//增
list.add(s2);//增
list.add(s3);//增
boolean flag=list.remove(s2);//删
System.out.println(flag);//验证是否删除
list.add(s2);//重新加进去
for(int i=0;i
这个是Strdent类
package pdsu_zjh;
public class Strdent {
private String nameString;
private int age;
public Strdent() {
super();
// TODO Auto-generated constructor stub
}
public Strdent(String nameString, int age) {
super();
this.nameString = nameString;
this.age = age;
}
public String getNameString() {
return nameString;
}
public void setNameString(String nameString) {
this.nameString = nameString;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}