java集合Conllection(List,Set)Map

Java集合框架详解
本文深入讲解Java集合框架,包括Collection接口及其子接口Set和List,Map接口,以及各种实现类如ArrayList、HashSet、HashMap等。探讨了集合的存储机制、遍历方式和常用方法。

Java集合框架

  • Java集合框架
  • Collection接口API
  • Iterator迭代器接口
  • Collection子接口之一:Set接口
    HashSet LinkedHashSet TreeSet
  • Collection子接口之二: List接口
    ArrayList LinkedList Vector
  • Map接口
    HashMap TreeMap Hashtable
  • Collections工具类

java集合概述

首先面向对象语言的特点是对事物的体现都是以对象的形式。为了方便对多个对象的操作,就要将对象进行存储,可以采用数组,也可以采用集合的形式。另一方面,使用(数组)Array存储对象方面具有一些弊端,一旦创建长度不可变,而Java 集合就像一种容器,可以动态地把多个对象的引用放入容器中。底层使用的也是数组,但是最大的好处就是可以动态的添加数据。
Java 集合类可以用于存储数量不等的多个对象,还可用于保存具有映射关系的关联数组。
java集合可以分为Collerction和Map
Collection接口
Set:元素无序、不可重复的集合 —类似高中的“集合”
List:元素有序,可重复的集合 —”动态”数组
**Map接口:**具有映射关系“key-value对”的集合

Collection接口树

在这里插入图片描述

Map接口树

在这里插入图片描述Collection接口是list和set的父接口该接口里定义的方法既可用于操作 Set 集合,也可用于操作 List 集合。
在Jdk中不直接提供此接口(Collection)的任何直接实现,而是通过子接口list,set来实现

Collection接口中常用的方法(共15个方法)(也是list和set中通用的方法)比较重要

在这里插入图片描述

代码实现 进行所有方法的测试 和总结

package com.ghl.demo;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Date;
import java.util.Iterator;

import org.junit.Test;

public class CollectionDemo {
	@Test
	public void test1() {
		//创建一个集合对象  由于Collection是接口 不能直接new  所以我们那子类list接口下的ArrayList来实现
		Collection coll=new ArrayList();
		//1.add(Object obj) 向集合中添加一个元素 默认添加的类型是Object类型
		coll.add("AA");
		coll.add(123);
		coll.add(new Date());
		//2.size() 返回集合中元素的个数     
		System.out.println(coll.size());
		//3.addAll(Collection coll) 将coll1中所有的元素添加到当前集合cell中
		Collection cell1=Arrays.asList(1,12,13);
		coll.addAll(cell1);
		//4.isEmpty() 判断集合是否为null  返回有个boolean类型
		boolean empty = coll.isEmpty();
		System.out.println(empty);
		//5.clear() 清空集合中的元素
		coll.clear();
		//查看集合中的元素(后面采用迭代器(Iterator)的方式查看结合中的元素)
		System.out.println(coll);

	}
	@Test
	public void test2() {
		Collection coll=new ArrayList();
		coll.add("AA");//String类型类 默认重写了equals()
		coll.add(123);//Integer包装类 默认重写了equals()
		coll.add(new Date());//日期类型 默认重写了equals()
		coll.add(new Person("ghl",20));//向集合中添加一个自定义对象person
		//6.contains(Object obj) 判断集合中是否包含某个元素  如果包含返回true  反之false
		//判断依据:根据元素所在类的equals()方法来判断 
		//如果我们自己定义一个类对象存入集合中需要使用Contains来判断集合是否包含某个对象时 (不要忘了重写equals()方法)
		boolean contains = coll.contains(123);
		//System.out.println(contains);  //true
		boolean p = coll.contains(new Person("ghl",20));//我们可以发现,我集合中存入的对象和我需要比较的对象是一摸一样的 可为什么会给我返回false?
		//System.out.println("我没重写equals方法,返回的是:"+p);   //不重写equals方法返回的是 false 默认使用的是Object类的equals   输出结果:(我没重写equals方法,返回的是:false)
		boolean p1 = coll.contains(new Person("ghl",20));//当我们重写equals方法后  看输出结果
		//System.out.println("我重写equals方法,返回的是:"+p1); //输出结果:我重写equals方法,返回的是:true
		
		//7.containsAll(Collection coll)判断当前集合是否包含此集合中的元素
		Collection coll1=new ArrayList();
		coll1.add("AA");
		coll1.add(123);
		boolean b=coll.containsAll(coll1);
	//	System.out.println("当前集合是否包含此集合(coll)中的元素:"+b);//输出结果:当前集合是否包含此集合(coll)中的元素:true
		
		
		//8. retainAll(Collection coll);  两个集合取交集  返回两个集合中共同的元素
		coll.retainAll(coll1);
	//	System.out.println(" 两个集合取交集,拿共同的部分 :"+coll); //输出结果 两个集合取交集,拿共同的部分 :[AA, 123]
		
		//9.remove(Object obj) 删除集合中的obj元素  若成功返回true  反之false  
		boolean remove = coll.remove("KK");//删除一个不存在的元素
		//System.out.println("删除集合中不存在的元素:"+remove);//输出结果:删除集合中不存在的元素:false
		
		//10.removeAll(Collection coll) 相当于差集  在这两个集合中删除共有的元素(在这里就不演示了)
		coll.retainAll(coll1);
		
		//11 equals(Object obj) 判断两个集合中的元素是否完全相同
		
		Collection coll2=new ArrayList();//创建一个集合coll2 跟coll1 一模一样  用来判断两个集合中的元素是否相同
		coll2.add("AA");
		coll2.add(123);
		boolean equals = coll1.equals(coll2);
		//System.out.println("判断两个集合中的元素是否相同,"+equals);//输出结果:判断两个集合中的元素是否相同,true
		// 12.hashcode()  算当前集合的hash值  算出集合中每一元素的hash值 然后采用迭代的方式进行相加 得到集合的hash值
	//	System.out.println("当前coll集合的hash值是:"+coll.hashCode());//输出结果:当前coll集合的hash值是:65564
		
		
		//13 toArray()  将集合转化为数组   
		Object[] array = coll.toArray();//转换为数组
		for(int i=0;i<array.length;i++) {//遍历数组中的每一元素
			System.out.println(array[i]);
		}
		

		//14.iterator() 返回一个Iterator接口的是实现类对象(迭代器遍历)
		Iterator iterator = coll.iterator();//结合的遍历 核心方法   hasNext()   next()
		while(iterator.hasNext()) {//判断集合中是否有下一个元素
			System.out.println(iterator.next());//输出集合中元素的值

		}
		// 15。 toArray(T[] coll) 返回此集合中所有元素的数组,需要指定泛型  
		
		
		
	}
	
}

在介绍一种集合遍历方式(增强for)

格式:
for (Object object : coll) {
//Object:集合中元素的类型 因为后去需要指定泛型 所以类型也会统一
//object:变量名 相当于for循环中的int i=0
//coll:具体遍历那个集合
}

总结

Collection作为集合的顶层接口,在学习List集合和Set集合之前,我认为有必要知道List或Set中的很多方法都是从Collection中获得的,及集合的遍历方式,以及集合的整体架构图。
在后面的博客介绍中会详细介绍

  • Collection子接口之一:Set接口
    HashSet LinkedHashSet TreeSet
  • Collection子接口之二: List接口
    ArrayList LinkedList Vector
  • Map接口
    HashMap TreeMap Hashtable
  • Collections工具类
    的使用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值