最后
一类是单个方式存储元素,这一类集合中超级父接口:java.utill.Collection;
一类是以键值对的方式存储元素,这一类元素中超级父类接口是:java.utill.Map;
2.1 超级父接口Collection
L i s t
2.2 超级父接口Map
2.3 总结
ArrayList:底层是数组
LinkedList:底层是双向链表
Vector:底层是数组,线程安全的,效率较低,使用较少
HashSet:底层是HashMap,放到HashSet集合中的元素等同于放到HashMap集合key部分了
TreeSet:底层是TreeMap,放到TreeSet集合中的元素等同于放到HashMap集合key部分了
HashMap:底层是哈希表
Hashtable:底层也是哈希表,只不过线程安全的,效率较低,使用较少
Properties:是线程安全的,并且key和value只能存储字符串String
TreeMap:底层是二叉树,可以自动按照大小顺序排序
List集合存储元素的特点:
有序:存进去和取出来的顺序相同,每一个元素都有下标
可重复:存进去1,还可以存储1
Set集合存储元素的特点:
无序:存进去和取出来的顺序不一定相同,元素没有下标
不可重复:存进去1,不可以再存储1
SortedSet集合存储元素特点: 无序不可重复的,
元素可排序:可以按照大小顺序排列
Map集合的特点
Map集合的key,就是一个Set集合
往Set集合中放数据,实际上放到了Map集合的key部分
3、Collection接口
==============
3.1 Collection存放的元素类型
没有使用“泛型”之前Collection可以存储Object的所有子类型
使用“泛型”之后,Collection只能存储某个具体的类型
(集合中不能直接存储基本数据类型,也不能存储java对象,存储的是java对象的内存地址)
3.2 Collection的常用方法
1)boolean add(Object e)向集合中添加元素
//多态机制,接口是抽象的,无法实例化
Collection c = new ArrayList();
//测试Collection接口中的常用方法
c.add(1200);//自动装箱,实际上是放进去一个对象的内存地址。Integer c = new Integer(1200);
c.add(3.14);//自动装箱
c.add(new Object());
c.add(new Student());
c.dd(true);//自动装箱
System.out.println(“集合中的元素个数是:” + c.size());//5
2)int size()获取集合中的元素的个数
3)void clear()清理集合
4)boolean contains(Object o)判断当前集合中是否包含元素o,包含返回ture,不包含返回false;
c.add(“绿巨人”);
System.out.println(c.contains(“绿巨人”));
5)boolean remove(Object o)删除集合中的某个元素
c.remove(“绿巨人”);
6)boolean isEmpty()判断该集合中元素中的个数是否为0
c.clear();
System.out.println(c.isEmpty());//true
7)*Object[ ] toArray()集合转换成数组
c.add(1200);
c.add(3.14);
c.add(“12345”);
//转换成数组
Object[] objs = c.toArray();
for(int i = 0 ; i<objs.length ; i++){
//遍历数组
object o = objs[i];
System.out.println(o);//调用toString方法
}
4、集合遍历/迭代
=========
4.1 如何遍历集合
迭代方法是Collection通用的一种方法,在Map集合中不能用。在所有的Collection以及子类当中使用
//创建集合对象
Collection c = new ArrayList();
//添加元素
c.add(“abc”);
c.add(“def”);
c.add(100);
c.add(new Object());
//对集合Collection进行遍历/迭代
//第一步:获取集合对象的迭代器对象Iterator
Iterator it = c.iterator();//、、、、、、、、、、、、、、c调用iterator()拿到迭代器,迭代器是个对象,其中对象有两个方法
//第二步:通过以上获取的迭代器对象开始迭代/遍历集合
/*
以下两个方法是迭代器对象Iterator中的方法:
boolean hasNext()如果仍有元素可以迭代,则返回ture。
Object next() 返回迭代的下一个元素。
*/
while(it.hasNext()){
Object obj = it.next();
System.out.println(obj);
}
Collection c = new ArrayList();
//添加元素
c.add(1);//自动装箱成Integer类型
c.add(2);
c.add(3);
c.add(4);
//迭代集合
Iterator it = c.Iterator();
while(it.hasNext()){
//存进去什么类型,取出来还是什么类型
Object obj = it.next();
if(obj instanceof Integer){
System.out.println(“Integer类型”);//这里调用toString方法转换成了字符串
}
}
4.2 迭代器是通用的
笔者福利
以下是小编自己针对马上即将到来的金九银十准备的一套“面试宝典”,不管是技术还是HR的问题都有针对性的回答。
有了这个,面试踩雷?不存在的!
回馈粉丝,诚意满满!!!
回馈粉丝,诚意满满!!!
[外链图片转存中…(img-RRIfwgF7-1715227363340)]
[外链图片转存中…(img-n8Mxemfq-1715227363341)]
[外链图片转存中…(img-YkwKH5Qd-1715227363342)]
[外链图片转存中…(img-1kFQ9rJM-1715227363342)]