Java集合的知识整理

集合的思维导图

ArrayList和LinkList的区别


ArrayList(数组结构):
    优点:查询速度快;缺点:增删改速度慢
LinkedList(链表结构):
    优点:增删改速度快;缺点:查询速度慢

 

 Collection接口的remove()方法和Iterator接口的remove()方法区别?


①性能方面:
    a.Collection的remove方法必须首先找出要被删除的项,找到该项的位置采用的是单链表结构查询,单链表查询效率比较低,需要从集合中一个一个遍历才能找到该对象;

  b.Iterator的remove方法结合next()方法使用,比如集合中每隔一项删除一项,Iterator的remove()效率更高
②容错方面:
    a.在使用Iterator遍历时,如果使用Collection的remove则会报异常,会出现ConcurrentModificationException,因为集合中对象的个数会改变而Iterator 内部对象的个数不会(就是改变了下标),不一致则会出现该异常
    b.在使用Iterator遍历时,不会报错,因为iterator内部的对象个数和原来集合中对象的个数会保持一致

 

Array与ArrayList有什么区别

①Array是Java中的数组,声明数组有三种方式

int[] a=new int[10];

int a[]=new int[10];

int a[]={1,2,3,4};

ArrayList是动态数组,也就是数组的复杂版本,,它可以动态的添加和删除元素,被称为”集合“,集合的声明如下

ArrayList list = new ArrayList(10);

ArrayList<Integer> list1 = new ArrayList<Integer>();

②存储的数据类型:Array只能存储相同数据类型的数据,而ArrayList可以存储不同数据类型的数据

③长度的可变:Array的长度是固定的,而ArrayList的长度是可变的

 

怎样将一个数组转成List,有什么方法

	public static void main(String[] args) {
//		数组转List
		String[] str = {"a","b","c"};
		List<String> strings = Arrays.asList(str);
		System.out.println(strings);
//		注意:当数组转成list之后,list是不能操作add、remove等操作
//		strings.add("good");//会报错
//		如果想要操作add、remove等操作,则需要:
		List<String> newStrs = new ArrayList<String>();
		newStrs.add("good");//此为正确的
	}
	public static void main(String[] args) {
//		List转数组
		List<String> str = new ArrayList<>();
		str.add("you");
		str.add("and");
		str.add("me");
		String[] strs = str.toArray(new String[str.size()]);
	}

 

HashSet、TreeSet、L inkedHashSet区别?

①.需要速度快的集合,使用HashSet

②.需要集合有排序功能,使用TreeSet

③.需要按照插入的顺序存储集合,使用LinkedHashSet

HashMap、TreeMap、linkedHashMap区别?

①.在Map中插入、删除和定位元素,HashMap是最好的选择

②.需要集合有排序功能,使用TreeMap更好

③.需要按照插入的顺序存储集合,使用LinkedHashMap

HashMap和HashSet区别

①HashMap实现了map接口,HashSet实现了set接口

②HashMap是以键值对的形式存在,HashSet是以对象存储的

③HashMap是用put()增加值的,HashSet是以add()增加的

④HashMap使用key计算hashcode,HashSet使用成员对象计算hashcode

⑤HashMap相对于HashSet较快,因为它是使用唯一的键获取对象,HashSet较HashMap来说比较慢

 

HashMap的实现原理

HashMap主要是根据bucket(水桶)自动调整容量,HashMap的扩容公式:16x0.75=12

16指的是默认初始化的容量大小,可以改变;

0.75指的是当容量大小达到原来的75%时开始扩容,即达到12的时候

 

List、Set、Map之间的区别

queue的知识

queue、message、looper、handler的关系

 

queue是队列的意思,当从数据库拿消息时,用looper进行循环遍历,拿到的msg给子线程执行,然后子线程通过handler这个通信机制将msg展示在UI。

 

讲项目的技巧

①项目开发背景(是给谁用,用来干嘛的)

②项目模块(判断出项目的大小)

③说明自己负责的模块

④这个项目的收获(突出以前不会--》现在会)

⑤做这个项目遇到的bug,说出解决方案

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值