集合Collection

一,集合的由来

我们在程序开发的过程中,根本不知道需要多少个数量的对象,甚至不知道它们准确的数据类型,为了满足这些常规的需求,我们要求能在任何时候,任何地点创建任意数量的对象,而这些对象用什么来容纳呢?首先我们想到了数组,但是数组只能存储同一种类型的对象,而且长度是固定的,那么这么办,这时候集合便应运而生了。

二,集合是什么?

java集合类存放在java.util包中,是用来存放对象的容器

注意!

1,集合只能存放对象,就算集合中存储的是基本数据类型也是装换成自己相对应的类

2,集合存放都是对象的引用,并非是对象的本身,对象的本身还是存放在堆中

3,集合可以存放不限数量,不同类型的数据类型

三,Collection介绍

Collection是所有集合的根节点,Collection 表示一组对象,这些对象也称为 collection 的元素,一些Collection允许有重复的元素,一些则不允许;一些是有序的,一些Collection则是无序的。

由于不同的需求,不同的集合类就有不同的存储结构

目前对于Collection的学习目的:

1,怎么去用Collection

2,Collection的底层结构

四,Collection的一些方法

add(E e)方法,这个E表示的是泛型,泛型就是未知的数据类型,就是所有的引用类型都可以,也是由调用者自己决定数据类型。此方法如果返回true代表添加成功,返回false代表添加失败

public static void main(String[] args) {
     Collection c1 =new ArrayList();//父类引用指向子类对象叫做多态
     //实现add()方法
     c1.add(10);
     c1.add("哈哈");
     c1.add(new Object());
     c1.add(new int [4]);
     System.out.println(c1);
     //打印的结果[10, 哈哈, java.lang.Object@15db9742, [I@6d06d69c]

 上面的调用没有指定数据类型,为了我们后期进行统一的管理,方便后期的调用,我们可以将数据类型进行统一

public static void main(String[] args) {
     Collection<String> c1 =new ArrayList<String>();//父类引用指向子类对象叫做多态
     //实现add()方法
     c1.add("你好");
     c1.add("哈哈");
     c1.add("非常好");
     c1.add("很好");
     System.out.println(c1);
     //[你好, 哈哈, 非常好, 很好]

addAll()方法,将当前指定Collection中的所有元素添加到此Collection中,相当于两个集合的并集

public static void main(String[] args) {
     Collection<String> c1 =new ArrayList<String>();//父类引用指向子类对象叫做多态
     //实现add()方法
     c1.add("你好");
     c1.add("哈哈");
     c1.add("非常好");
     c1.add("很好");
     Collection<String> c2 =new ArrayList<String>();
     c2.add("非常好2");
     c2.add("很好1");
     c1.addAll(c2);
     System.out.println(c1);     
	}

clear()方法标志清空集合

public static void main(String[] args) {
     Collection<String> c1 =new ArrayList<String>();//父类引用指向子类对象叫做多态
     //实现add()方法
     c1.add("你好");
     c1.add("哈哈");
     c1.add("非常好");
     c1.add("很好");
     System.out.println(c1);//[你好, 哈哈, 非常好, 很好]
     c1.clear();
     System.out.println(c1);//[]

contains()方法

public static void main(String[] args) {
     Collection<String> c1 =new ArrayList<String>();//父类引用指向子类对象叫做多态
     //实现add()方法
     c1.add("你好");
     c1.add("哈哈");
     c1.add("非常好");
     c1.add("很好");
     //如果此 collection 包含指定的元素,则返回 true
     System.out.println(c1.contains("你好"));//true

containsAll()方法,如果此Collection包含指定Collection中的所有元素,则返回true,判断两个集合之间是否是子集的关系

public static void main(String[] args) {
     Collection<String> c1 =new ArrayList<String>();//父类引用指向子类对象叫做多态
     //实现add()方法
     c1.add("你好");
     c1.add("哈哈");
     c1.add("非常好");
     c1.add("很好");
     Collection<String> c2 =new ArrayList<String>();
     c2.add("你好");
     c2.add("哈哈");
     c2.add("非常好");
     c2.add("很好");
     System.out.println(c1.containsAll(c2));

equals()方法,判断集合是否相等,主要比较的是元素

public static void main(String[] args) {
     Collection<String> c1 =new ArrayList<String>();//父类引用指向子类对象叫做多态
     //实现add()方法
     c1.add("你好");
     c1.add("哈哈");
     c1.add("非常好");
     c1.add("很好");
     Collection<String> c2 =new ArrayList<String>();
     c2.add("你好");
     c2.add("哈哈");
     c2.add("非常好");
     c2.add("很好");
     System.out.println(c1.equals(c2));

hashCode()返回此集合的哈希吗值

public static void main(String[] args) {
     Collection<String> c1 =new ArrayList<String>();//父类引用指向子类对象叫做多态
     //实现add()方法
     c1.add("你好");
     c1.add("哈哈");
     c1.add("非常好");
     c1.add("很好");
     System.out.println(c1.hashCode());

isEmpty()判断集合是否为空,不为空返回false ,为空返回true

remove()删除元素,删除成功,返回true,删除失败,返回false

public static void main(String[] args) {
     Collection<String> c1 =new ArrayList<String>();//父类引用指向子类对象叫做多态
     //实现add()方法
     c1.add("你好");
     c1.add("哈哈");
     c1.add("非常好");
     c1.add("很好");
     System.out.println(c1);
     System.out.println(c1.remove("你好"));
     System.out.println(c1);
     

retainAll()求两个集合的交集

public static void main(String[] args) {
     Collection<String> c1 =new ArrayList<String>();//父类引用指向子类对象叫做多态
     //实现add()方法
     c1.add("你好");
     c1.add("哈哈");
     c1.add("非常好");
     c1.add("很好");
     Collection<String> c2 =new ArrayList<String>();
     c2.add("你好");
     c2.add("哈哈");
     System.out.println(c1.retainAll(c2));
     System.out.println(c1);
     

 size()返回此Collection中的元素个数

public static void main(String[] args) {
     Collection<String> c1 =new ArrayList<String>();//父类引用指向子类对象叫做多态
     //实现add()方法
     c1.add("你好");
     c1.add("哈哈");
     c1.add("非常好");
     c1.add("很好");
     System.out.println(c1.size());
     

 

toArray()将集合中的所有的元素以数组形式是返回

public static void main(String[] args) {
     Collection<String> c1 =new ArrayList<String>();//父类引用指向子类对象叫做多态
     //实现add()方法
     c1.add("你好");
     c1.add("哈哈");
     c1.add("非常好");
     c1.add("很好");
     System.out.println(Arrays.toString(c1.toArray()));      
	}
}

iterator()返回此Collection的元素上进行迭代的迭代器

public static void main(String[] args) {
     Collection<String> c1 =new ArrayList<String>();//父类引用指向子类对象叫做多态
     //实现add()方法
     c1.add("你好");
     c1.add("哈哈");
     c1.add("非常好");
     c1.add("很好");
    Iterator<String> it =c1.iterator();
    for(String str:c1) {
    	while(it.hasNext()) {
    		System.out.println(it.next());
    	}
    }

二叉树中序遍历的原理图

 

 

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值