JAVA关于集合

引入集合

为什么要有集合?

对于数组,我们如果定义了它的长度,但是添加的元素已经最大了,可是还想添加的话,不是不能添加了吗?这个时候就要引入集合了,集合可以自动扩容,也就是向集合添加元素的时候,它的长度会自动扩容,这个也是集合的优势。

特点:

数组能存基本数据类型也能存引用数据类型。

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这个包头里的

JAVA关于集合_第1张图片

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中写好的类,这个类在底层代码做了一些处理
        //打印的不是地址值,而是集合中储存的数据内容,展示的时候会用“[]”,把数据进行包裹!

    }
}

 关于集合ArrayList的成员方法

方法名                      说明
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()                 集合的长度,也就是集合中元素的个数

 1.添加:关于boolean add(E e)

 

		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];
	

 2.3.删除:关于boolean remove(E e)和E remove(int index)

  • 第一个删除返回的是布尔类型,和添加的用法一样,删除的是输入的数据。
  • 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]";

4.修改E set(int index,E e)

修改指定索引写的元素,返回原来的元素

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];

5.查找 E get(int index)  

获取指定索引的元素

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;
	}
	
}

你可能感兴趣的:(Java学习,java,开发语言,eclipse)