Java中集合框架,Collection集合体系(List,set),Map集合与实现类。泛型集合和工具类。

集合的概念:

是对象的容器,定义了对多个对象常用的操作方法。可以实现数组的功能。
	和数组的区别
	1、数组长度固定,集合的长度是不固定。
	2、数组可以存储基本类型和引用类型,而集合只能存引用类型。

Collection体系集合:
在这里插入图片描述

Collection父接口:

特点:代表一组任意类型对象的数据,无序无下标。下面的实现类,使用迭代器Iterator实现输出,或者使用增强for。
(1)List:Collection题下的子接口。
特点:有序有下标,元素可以重复。
独有方法:sublist[ ],返回了一个新的集合。
		 add(int index, Object o);
contains( ),比较方法是使用Object的equals方法,比较的是地址。

实现类:

  1. ArrayList( ):数组结构实现,必须开辟连续的空间。查询快,增删慢。运行效率快,线程不安全。创建的时候,默认是空的Object数组,长度为0。使用add方法第一次进行数据添加的时候,进行扩容,默认是10。第二次自动扩容为15,是1.5倍增长于之前。
//底层实现扩容的代码,grow()方法。
int [ ]  new Capacity = oldCapacity+oldCapacity>>2;
//快速创建list集合,但是创建的是不可变的。
List<T> xx = Collections.emptyList();
//list.binarySearch(list,"str");方法,找到返回str下标,找不到
//返回应该插入位置的下标,前面加个负号,表示插入。
//清空集合,仅仅是清空集合里面的数据,对象本身并没有删除。
collection.clear();

//遍历的方法
for (Object object : collection) {
		String str =(String)object;
		System.out.println(str);
	}
	System.out.println("===============");
		
//遍历2 迭代器 类似于while循环
//collection.iterator();
//使用迭代器循环
Iterator it = collection.iterator();
while(it.hasNext()) {
	//next() 取值,指针向下移动,指向下一个值
	String s = (String)it.next();
	System.out.println(s);
	//不能使用collection删除方法,因为遍历同时不能使用集合(修改)删除方法,
	//否则出现并发修改异常。ConcurrentModificationException (并发修改异常)
	//collection.remove(s);
	//使用迭代器的自己的删除方法 移除指针指向的值
	//it.remove();
}
  1. Vector( ):数组结构实现,查询快,增删慢。运行效率慢,线程是安全的。

  2. LinkList( ):存储方式,双向链表结构。增删快,查询慢。

    LinkList()独有的方法,addFirst( ),addLast( )。
    
(2)Set集合
特点:无序,无下标,元素不可以重复。
方法:全部继承来自Collection中的方法。使用foreach循环进行遍历。
底层实现是链表加上数组的结构。

1、HashSet (重点)

基于HashCode实现元素不重复,当存入的元素哈希码相同的时候,会调用==或equals方法进行确认。如果返回的结果为true,意味着找到了相同的元素
值,则拒绝存入。

2、LinkedSet

链表实现的HashSet,按照链表进行存储,即可保留元素的插入顺序。

3、TreeSet

基于排序顺序实现元素不重复。
实现了SortedSet接口,对元素集合自动排序。
元素的对象类型必须是Comparable接口,指定排序规则。
通过CompareTo方法判断元素是否重复。

(3)Map体系集合
在这里插入图片描述
Map父接口:
特点:称为映射。存储一对数据。键不可以重复,值可以重复。<K,V>
Map集合实现类:

  1. HashMap:线程不安全。运行效率快。允许null值存储进KEY或VALUE值。
  2. HashTable:线程安全。运行效率慢,不允许作为null值存储进KEY或VALUE。
  3. Properties:HashtTable子类,要求KEY或者VALUE都是String类型,通常用于配置文件的读取。
  4. TreeMap:实现了SortedMap接口,可以对key自动排序,key需要实现Comparable接口。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值