java 集合 ArrayList

变量--容器 存储一个元素

数组--容器

  一组具有某种特性的数据存放在一起;

  存储一组元素(数据类型一致) 长度固定

自己定义了Box(ArrayBox LinkedBox)--容器

  存储一组元素 长度可变

集合--容器 是指具有某种特定性质的具体或抽象的对象汇总而成的集体;

   是用来存储一组元素 长度可变

        集合java.util

Collection                  Map

存储的都是value             存储的是以key-value形式存在

List  Queue    Set  

有序可重复     无序无重复      key无序无重复  value无序可重复

*ArrayList     HashSet

Vector       TreeSet

Stack(LIFO)

*LinkedList

 

add()        add()

remove()      remove()

set()        

get()        iterator()

size()        size()

序:顺序 添加进去的元素 取得元素的顺序一致 注意指的不适集合自己的顺序

重复:两个对象元素一致

 

ArrayList、Vector区别-->StringBuilder  StringBuffer

 

List集合

1.ArrayList  2.LinkedList(双向链表)  3.Vector   4.Stack(一个口,先进后出)

 

1.ArrayList

  所属的包 java.util

  如何创建对象

  无参数构造方法  带默认空间的构造方法  带collection参数的构造方法

  常用方法--小容器(CURD 增删改查)

 增删改查 add() remove() set() get() size()

 addAll  removeAll  retainAll  indexOf  lastIndexOf  contains()  subList() 

isEmpty()  clear()  ensureCapacity()  iterator()

toArray()  trimToSzie() 

  由于arrayList底层是一个Object[] 什么类型都可以存进去

  取出来的时候多态的效果 需要自己造型 显得用起来非常的麻烦

  JDK1.5之后-->泛型

  用来规定数据类型的,定义的时候用一个符号代替某种类型

  在使用的时候用具体的数据类型 将定义的那个符号替换掉

  ArrayList特点适合遍历轮询  不适合插入删除;

泛型可以用在哪里?(not 造型)

在类或接口描述的时候 可以使用某种符号来表示一个未知的类型

在类型使用的时候 需要一个具体类型来代替

注意:泛型需要使用引用数据类型来代替

1.泛型类

  类定义的时候描述某种数据类型 集合的使用就是这样

2.泛型接口

  与泛型类的使用基本一致 子类实现接口时必须添加泛型

3.泛型方法

  方法调用时传参数;方法的泛型与类无关 带有泛型的方法可以不放在带有泛型的类中;

4.高级泛型 规范边界 Extends super

import java.util.*;
public class Test0519{
	public static void main(String[] args){
		ArrayList<String> a=new ArrayList<String>();
		a.add("abc");
		a.add("10");
		a.add("true");
		a.add("3.4");
		for(int i=0;i<a.size();i++){
			System.out.println(a.get(i));
		}//返回集合a中每个元素
		System.out.println(a);//显示a中元素;重写了toString;
		System.out.println(a.size());//显示长度;
		int l=a.size();//a总长度;//每删除一个索引数据,则a长度-1;与数组不同,数组长度不变;
		for(int i=0;i<l;i++){
			System.out.println("即将删除元素是:"+a.get(0)+";此时a总长度为:"+a.size());
			a.remove(0);			
		}
		System.out.println(a);//显示a中元素;
		System.out.println(a.size());//全部删除后,a中元素;
	}
}

  

 

import java.util.*;
public class Test0519{
	public static void main(String[] args){
		ArrayList<Integer> a=new ArrayList<Integer>();
		a.add(10);
		a.add(2);
		a.add(3);
		ArrayList<Integer> b=new ArrayList<>();
		b.add(100);
		b.add(200);
		//b中所有元素添加到a中
		//a.addAll(b);//[10,2,3,100,200]并集
		a.addAll(1,b);//[10,100,200,2,3] 插入
		System.out.println(a);
		//a.clear();//[]
		boolean ise=a.contains(200);//包含
		System.out.println(ise);
		System.out.println(a);
		int x=a.indexOf(2);//该数第一个索引号;
		System.out.println(x);
		int y=a.lastIndexOf(2);//该数最后一个索引号;
		System.out.println(y);
		System.out.println(a.isEmpty());//空?
		a.remove(0);//删除0号索引的值;
		System.out.println(a);
		a.remove(new Integer(2));
		System.out.println(a);
		a.retainAll(b);//交集
		System.out.println(a);
		System.out.println(b);
		a.set(1,300);//改
		System.out.println("set:"+a);
		a.removeAll(b);//差集
		System.out.println("ab差集"+a);		
		//集合交集,并集,差集
		System.out.println("a长度:"+a.size());
		System.out.println("b截取:"+b.subList(0,1));
		Integer[] mm=new Integer[a.size()];
		a.toArray(mm);//集合变成数组;
		System.out.println(mm.length);
		a.trimToSize();//变成有效元素个数那么长
		System.out.println(a);
	}
}

  

 泛型不能使用基本类型--如果想要使用基本类型 需要使用其对应的包装类

总结

集合有很多类 非常庞大的一个系统

1.了解集合的每一个具体的分支 各种特点;

2.常用的集合的方法;

3.每一个集合的特点;

4.集合底层的原理;

 

 

 

  

  

 

 

 

  

posted on 2020-05-19 21:58  星空6  阅读(209)  评论(0)    收藏  举报

导航