集合:
集合的概念:
对象的容器,定义了多个对象进行操作的常用方法,可实现数组的功能
集合和数组的区别:
1.数组的长度是固定的,集合的长度不固定
2.数组可以存储基本类型和引用类型,集合只能存储应用类型
collection:
lterator:迭代器、
迭代器方法:
hasNext():如果有元素可以迭代,则返回true
next():返回迭代的下一个元素
remove():从迭代器指向的collection中移除迭代器返回的最后一个元素(可选操作)
clear():清空集合
Java集合框架包含的内容(特点):
Collection接口存储一组不唯一,无序的对象
List接口存储一组不唯一,有序(插入顺序)的对象
Set接口存储一组唯一,无序的对象
Map接口存储一组键值对象,提供key到value的映射
List接口的实现类:
存储一组不唯一有序的对象
ArrayList:ArrayList 类是一个可以动态修改的数组,与普通数组的区别就是它是没有固定大小的限制,我们可以添加或删除元素。
LinkedList: 链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的地址。
List方法:
void add(int index,Object o) :在index位置插入对象o
Boolean addAll(int index,Collection c):将一个集合中的元素添加到此集合中的index位置处
Object get(int index):返回集合中指定位 置的元素
List subList(int fromIndex,int toIndex):返回fromIndex和toIndex之间的集合元素
subList(int x,int y):返回子集合,含头不含尾
ListIterator
方法:
contains(o);判断O对象在集合中是否存在,存在返回true,不存在返回false
isEmpty():判断结合是否为空,为空返回true不为空返回false
indexOf(o):获取指定O元素在集合中的位置
——————————————————————————————————————————————————————————-
ArrrayList:实现了长度可变的数组,在内存中分配连续的空间,遍历元素和随机访问 的元素的效率较高
LinkedList:采用链式存储方式,插入删除元素效率较高
set实现类:
存储唯一无序的对象
Hashset:
基于Hashcode实现元素不重复
当存入的元素哈希码相同时,会调用equals方法进行对比,如果结果为true,则拒绝后者存入
Treeset:
基于排列顺序实现元素不重复
Hashset特点:
集合内的元素是无序的
Hashset是非线程安全的
允许集合元素值为null
map实现类:
存储一组成对的键(key)—值(value)对象
其中键(key)可以重复,值(value)不能重复
特点:
1.存储键值对(key-value)
2.键不能重复,值可以(在添加重复的值时,后面的会把前面的值覆盖掉)
3.无序
遍历集合:
//增强for
Set<Integer> set=map.keySet();
for (Integer integer : set) {
System.out.println(map.get(integer));
}
//entry
Set<Map.Entry<Integer, String>> set1=map.entrySet();
for (Map.Entry<Integer, String> integerStringEntry : set1) {
System.out.println(integerStringEntry.getKey()+"------"+integerStringEntry.getValue());
}
//迭代器
Set<Integer> set2 = map.keySet();
Iterator<Integer> iterator=set2.iterator();
while (iterator.hasNext()){
int key=iterator.next();
System.out.println(key+"------"+map.get(key));
}
泛型:
将对象的类型作为参数,指定到其他类或方法上,从而保证类型类型转换的安全性和稳定性
泛型的本质就是参数化类型
语法:
好处:
提高代码复用性
防止类型转换异常,提高代码安全性
泛型的用处:
泛型类,泛型接口,泛型方法
泛型类:
具有一个或多个类型参数的类叫泛型类
泛型接口:
拥有一个或多个类型参数的接口叫泛型接口
泛型方法:
带有类型参数的方法叫泛型方法
特殊:
Object[] arr=list.toArray();//集合转数组
List
*.tocharArrays():字符串转字符