黑马程序员-集合的总结

------- android培训java培训、期待与您交流! ----------

Collection
|--List
|--ArrayList
底层数据结构是数组,查询快,增删慢。
线程不安全,效率高。
|--LinkedList
底层数据结构是链表,查询慢,增删快。
线程不安全,效率高。
|--Vector
底层数据结构是数组,查询快,增删慢。
线程安全,效率低。
|--Set
|--HashSet
底层数据结构是哈希表。
如何保证唯一性呢?
依赖两个方法:hashCode()和equals()
|--LinkedHashSet
底层数据结构是链表和哈希表。
有序,唯一。
|--TreeSet
底层数据结构是二叉树。
如何保证唯一性呢? 根据比较性的返回值是否是0.
两种方案:同时还可以进行排序。
元素具备比较性 Comparable
集合具备比较性 Comparator
Map
|--HashMap
底层数据结构是哈希表。对键有效。
如何保证唯一性呢?
依赖两个方法:hashCode()和equals()
|--LinkedHashMap
底层数据结构是链表和哈希表。
键 有序,唯一。
|--Hashtable
底层数据结构是哈希表。对键有效。线程安全的。
如何保证唯一性呢?
依赖两个方法:hashCode()和equals()
|--TreeMap
底层数据结构是二叉树。对键有效。
如何保证唯一性呢? 根据比较性的返回值是否是0.
两种方案:同时还可以进行排序。
元素具备比较性 Comparable
集合具备比较性 Comparator


3:集合的使用总结
考虑是否有键值对映射关系:
是:Map
是否要对键排序:
是:TreeMap
否:HashMap

不知道用谁,就用HashMap


否:Collection
元素是否唯一:
是:Set
元素是否需要排序:
是:TreeSet
否:HashSet
不知道用谁,就用HashSet
否:List
元素是否线程安全
是:Vector 也不用它。用Collections.synchronizedList(...)
否:ArrayList,LinkedList
查询多:ArrayList
增删多:LinkedList
不知道用谁,就用ArrayList
不知道用谁,就用ArrayList


4:集合的遍历方式
Collection
|--List
方式1:迭代器
方式2:增强for
方式3:普通for


如果需要索引,用普通for。否则就用增强for。
|--Set
方式1:迭代器
方式2:增强for
Map:
不能直接遍历,需要通过Set执行。


方式1:键值找值
方式2:通过映射关系找键值和值

5:可变参数
(1)参数个数不固定。
(2)格式:
修饰符 返回值类型 函数名(数据类型... 变量名)
{

}


注意:
这个变量其实是一个数组。
如果一个函数有多个参数,可变参数只能放在最后边。
(3)举例:
public static int sum(int... x)
{
int result = 0;


for(int i : x)
{
result+=i;
}


return result;
}


6:Arrays工具类的使用
(1)对数组进行操作的工具类
(2)要掌握的功能:
A:toString()
B:sort()
C:binarySearch()
(3)把数组变成集合的功能
asList(T... t)


注意:把数组转成集合后不能添加和删除。但是可以修改。


7:Collections工具类的使用
(1)对Collection集合进行操作的工具类
(2)Collection和Collections的区别
前者是集合的顶层接口,里面定义了集合的常见功能。
后者是对集合操作的工具类,里面定义了排序,查找等功能。
(3)需要了解
A:排序
B:查找
C:最大值
D:反转
E:随机置换

------- android培训java培训、期待与您交流! ----------

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值