容器Collection

容器Collection
Java面试的重头戏,Java里面所有的数据结构基本都与Collection有关
Java提供的容器Collection
Colection这个东西,是一个接口,是Java给我们在Java语言中,最常用的顶级容器接口
注:顶级接口就是在这个实现链上,他基本已经到了最高的一个接口了
容器:我们又有一个内容,容器的基本操作被分为求长、定位、替换
容器中包含一些个常用的方法,但是容器本身不包含角标的概念
容器的子接口,有LiSee、Set这些子接口部分包含角标概念,我们通过原码的阅读发现:
+List是Collection的子接口,包含角标概念;Java对于常用的List是会给出具体的实现方案的,也就是说,Java给出了List的实现类型;也就是说,如果我们需要使用List,那么直接调用List的实现类就行
ArrayList
底层的实现是用数组写的,顺序表
查找效率高;增删效率低
初始化格式

	ArrayList<String> list = new ArrayList<>();
	ArrayList<String> list1 = new ArrayList<>();
	//add   增
	list1.add("hjx");
	list1.add("wrp");
	list.add("yuxiansheng");
    System.out.println(list.size());
	list.add(0, "cxy");
	list.addAll(list1);
	//remove   删
	System.out.println(list.remove("hjx"));
	System.out.println(list.removeAll(list1));
	//set   改
	list.set(0, "yuxianseng");
	list2.set(0, 5);
	//indexOf   查第一个
	//lastIndexOf   查最后一个
	System.out.println(list2.indexOf(1));
	System.out.println(list2.lastIndexOf(2));
	//get   拿/输出第几个值
		System.out.println(list.get(0));
	//size   求长
		System.out.println(list.size());
	//retainAll   
		保留在1里面所有出现过的2的值
	//subList   截取
		System.out.println(list2.subList(0, list2.size()));
	//扩容
		不设置的其大小的时候默认为10;

在容量超出时每次增长1.5倍:
扩容后容量 = 扩容前容量 + 扩容前容量 / 2

LinkedList
	底层的是实现是链表,没有容量的概念
	增删效率高;查找效率低
	具体内容与ArrayList一致
	add   和
		MyLinkedList<String> list = new MyLinkedList<>();
	list.add("asd");
	list.add("zxc");
	list.add("asd");
	list.add("zxc");
	list.remove(1);
	for(int i = 0;i<list.size();i++) {
		System.out.println(list.get(i));
	}
	get()    增加
	clear()   清理
	remove    删除
	size()   大小
栈Stack
	方法
		boolean empty()

测试栈是否为空
Object peek()
查看栈顶部的对象,但不从栈中移除它
Object pop()
查看栈顶部的对象,并且移除它
Object push(Object element)
把项目压入栈顶部*可以理解为增
int search (Object element)
返回对象在栈中的位置,以1为基数
set
//哈希算法簇
//哈希过程 可以正向推出哈希值,但是不能由哈希值推反推 例:数学运算
//哈希碰撞 哈希值相同的时候
//没有角标,只能用迭代器获取
//不能放重复的值,多个值只放进一个
//默认哈希无序,但不一定
//可以去重
HashSet
+无序,底层实现是HashMap
使用的是HashMap中的k,v为null
LinkedHashSet
+有序,按放进来的顺序取出去
TreeSet
+字典序升序排序输出 放进来的值必须有可比较的能力,否则会报错

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值