小鑫的JAVA之路(11):集合

什么是集合,集合就是一个所有元素在一起的整体,我们把他叫做一个集合,是不是听起来很像数组,是的,在集合的底层,其实就是由数组来实现的。
在这里插入图片描述
Collection是一个接口,他没有实现类,他的子接口有Set和List,Set又叫做无序集合,里面的元素不可以重复。List叫做有序集合,里面的元素可以重复。
Set集合主要的实现类有:HashSet,TreeSet,LinkHashSet。List里主要的实现类有ArrayList,Vector,LinkedList。
我们主要调几个常用的实现类来讲。

ArrayList

ArrayList底层有一个Object对象来进行存储,默认的长度是10,当长度不够时,他会自动进行扩容1.5倍,所以ArrayList可以根据索引来得到值。
ArrayList有哪些常用方法呢?
add:用于向集合中添加元素。
remove:用于从集合中删除元素。
size:用于从集合中获取元素的个数,相当于数组的索引。
clear:清空集合中所有元素。
isEmpty:判断集合是否为空集合。
contains:判断集合中是否包含这个对象。
我们来试着使用这些集合中的方法

public class Test05 {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Collection<Integer> a = new ArrayList<Integer>();
		a.add(1);
		a.add(2);
		a.add(3);
		//添加元素
		boolean remove = a.remove(1);
		//删除元素
		System.out.println(remove);
		//判断删除是否成功
		boolean empty = a.isEmpty();
		//判断是否为空
		System.out.println(empty);
		a.clear();
		//清空元素
		empty = a.isEmpty();
		//判断是否为空
		System.out.println(empty);
	}
}

<>是泛型,这个里面呢,代表的是限定集合里的元素的类型,里面只能是引用类型,那么基本数据类型怎么办呢?JAVA提供了基本数据类型的包装类,比如Int的包装类就是Integer,char的包装类是Character。

迭代器

我们怎么遍历集合呢?难道利用索引挨着挨着遍历么?当然这样是可行的。但是在我们集合中提供了一个迭代器接口来让我们能够遍历集合,那么怎么使用它呢?
语法如下:
Iterator<类型> iterator集合名.Iterator();
Iterator接口提供了两个方法:
hasNext:判断集合中时候还有下一个元素。
next:取出集合中的下一个元素。
所以通过迭代器,我们可以实现对集合的遍历
接着我们演示一遍

public class Test05 {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Collection<Integer> a = new ArrayList<Integer>();
		a.add(1);
		a.add(2);
		a.add(3);
		Iterator<Integer> iterator = a.iterator();
		while(iterator.hasNext()//判断是否还有下一个元素,如果有返回True,没有返回Flase) {
			int b = iterator.next();
			//取出元素
			System.out.println(b);
		}
	}
}

这样我们就实现了对集合的遍历。

HashSet

HashSet是Set接口的实现类,他的底层是以哈希码为值存储的数组,所以他是无序的,没有索引。并且,HashSet里的元素不能够重复,因为相同的值,他们的哈希值相同,那么他们存储的位置也相同,那么他们就会进行覆盖,所以HashSet里的元素不能重复
除了不能根据索引访问对象,其他的方法都与ArrayList大同小异,所以我们就不一一演示了。

TreeSet

TreeSet也是Set接口的实现类,他和HashSet的区别就是TreeSet是有序的,那么它是如何来排序的呢?TreeSet重写了一个叫做comparable的接口,能够根据comparable来进行排序,所以他们的区别就是TreeSet有序,HashSet无序,但是我们说Set是无序的啊,这里TreeSet怎么就变成有序的了呢?我们注意,我们通常指的有序,是指的元素存放的顺序,第一个存入的元素,对应的索引是0。而我们这里说的有序,是元素按照一定的规律进行排序,而不是我们通常所值的存取顺序。

Map

Map集合是一个双列集合,他有两个元素,一个键一个值,我们通常按照键的值去找到值的值。我们怎样定义一个Map呢?

Map<String, Integer> map = new HashMap<String, Integer>();

这个HashMap就是Map接口的实现类,我们来介绍几个Map的方法:
put:添加元素。
value get(key):根据键获取值。
size:获取集合中键值对的个数。
我们同样可以使用迭代器来遍历集合:

public static void main(String[] args) {
	HashMap<Integer, String> hashMap = new HashMap<>();
	hashMap.put("1","周芷若");
	hashMap.put("2", "黄蓉");
	hashMap.put("3", "小龙女");
	Iterator<String>iterator=hashMap.keySet().iterator();
	//迭代器
	while(iterator.hasNext()//获取键的值) {
	String s = iterator.next();
	System.out.println(s+"  "+hashMap.get(s)//根据键获取值);
	}
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值