欢迎使用CSDN-markdown编辑器

来源:互联网 发布:淘宝男士羽绒服加厚 编辑:程序博客网 时间:2024/06/07 08:18

集合类

0.数组与集合

数组

  1. 元素类型必须相同,包括基本数据类型和对象引用。
  2. 数组长度固定。
  3. 数组地址连续
  4. 可使用下标访问
  5. 易抛出null指针异常和索引越界异常

集合

  1. 只能存储对象
  2. 容器
  3. 长度可变
  4. 元素类型可以不同
  5. 元素个数size
  6. 位于 java.util.*;
  7. 判断集合有效性:先判断集合是否存在,在判断集合不为空。顺序相反时,会发生逻辑短路。

== 和 equals

  1. ==
    • 判断对象是否是一个。地址是否相同
  2. equals
    • 判断对象内容是否相同,默认调用Object的equals()方法,而该方法判断地址是否相同

1.List

特点

  1. 可重复
    • 只与equals()方法有关
  2. 有序

ArrayList 线程不安全

——–class java.util.ArrayList
1. 内部封装数组,扩容机制是数组复制
2. 内存连续
2. 查快,删、增慢

Vector

  • 线程安全版ArrayList
  • 不推荐使用

LinkedList 线程不安全

  • 链表结构的集合
    1. 双指针节点,双向链表,无环
    2. 增删快,查慢

2.Set

  1. 不可重复,可用于去重
    • 依赖于equals()方法
      • 一般需要重写该方法实现对象内容的判断。
  2. Set是特殊的Map,其value是一个占位的垃圾对象。
  3. 只可通过迭代器迭代访问元素

HashSet 线程不安全

  1. 内部实现调用HashMap
  2. 与HashMap完全相同
  3. 存取速度快

TreeSet 线程不安全

  • 线程不安全,可以对Set进行排序
  • 通过compareTo或compare方法来保证元素的唯一性,元素以二叉树形式存放。
  • 排序实现方式(两种法则):
    • Comparable接口,实现compareTo()方法。
      • 数据类实现Comparable接口,实现compareTo()方法
    • Comparator,对比器。
      • 定义数据特有的Comparator对比器类,实现Comparator对比器,实现compare()方法。定义集合时,把对比器对象作为参数传递。

3.Map

–interface java.util.Map
1. 映射 key-value
2. Entry集合。一个Entry对应一个key-value对
3. key不重复,无序,同set
4. Map.size是Entry个数
5. Map接口是单独接口,没有继承任何接口,与之前版本不同,但引用了collection接口
6. put()
1. 将key和value关联,如果key存在,则value被覆盖
6. Map集合没有直接取出元素方法,先转成set集合,再通过迭代获取
7. get(key)
8. entrySet
9. keySet;

HashMap 线程不安全

–class java.util.AbstractMap
—class java.util.HashMap
* 数组+链表
* 存取速度块
1. hash()实现原理,为什么:
1. 获取key的hashcode,然后^右移16位后值得到一个Newhash,移位目的与更多特征值相关,异或为了使对象更加分散(与运算积聚在低位,或运算积聚在高位)
2. Newhash与数组长度减一与运算得到在数组下标范围内的值。桶的概念
2. clear 清空桶
2. 元素重复判断标准 : p.hash == hash && ((k = p.key ) == key || (key != null && key.equals(k)))
1. new hash不同,对象不同
2. new hash相同,对象是同一对象,则对象相同。
3. new hash相同,对象不是同一对象,在判断equals方法,则对象相同性判定和equals一致。
* hash不相等 > hash相等
3. 数据类型:Node

TreeMap

  • 对key进行排序,排序原理与TreeSet相同
  • key - value

HashTable 线程安全

4.collections

  • 集合工具类
    1. binarySearch
    2. copy
    3. synchronizedList
    4. List<String> names = Collections.synchroizedList(new ArrayList<String>());
    5. max
    6. sort
    7. 指定对比器对象

arraycopy

  • 数组拷贝,类型不限制
    • 基本类型拷贝内容数据副本
    • 对象拷贝内容是对象地址(引用),对象具有一致性

5.Arrays 数组工具类

  • asList()将参数转换成Array$ArrayList集合对象
  • sort 数组排序
  • binarySearch 二分查找

6.foreach()

  • 增强for()循环
  • 数组可以、集合可以、Iterable

变长参数

java
public void adTel (String... str){
for( String s : str){
tels.add(s);
for( int i=0; i<str.length; i++){
tels.add(str[i]);
}

* 三点表示变长参数,使用增强for循环遍历变长参数的值,相当于数组
* 没有空值异常,即参数可零个或多个
* 变长参数必须位于方法最后一个参数,一个方法不能有多个变长参数

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 淘宝误点了收货怎么办 注销公司社保户怎么办 手机媒体声音小怎么办 手机媒体没有声音怎么办 vivo开不了机怎么办 vivox5开不了机怎么办 淘宝商品出现问题怎么办 淘宝企业店新店怎么办 ps中的字体模糊怎么办 电商时代我们怎么办 电商虚假宣传怎么办 有货车找不到货源怎么办 天猫订单删除怎么办 微信支付不成功怎么办 滴滴订单未支付怎么办 在天猫买了假货怎么办 13岁有痛经怎么办 新店排名被降怎么办 淘宝店铺跳失率过大怎么办 国外打印很贵怎么办 店铺访客被拒怎么办 steam锁支付后怎么办 芦荟茎太长了怎么办 网店加盟被骗怎么办 分期乐忘记账号怎么办 贴墙纸遇到插头怎么办 用了屈臣氏过敏怎么办 商品房内电箱不符合标准怎么办 淘宝上恶意退货怎么办 退货率高了怎么办 淘宝店被关了钱怎么办 买家不申请退款怎么办 被买家恶意投诉怎么办 淘宝投诉后退款怎么办 天猫投诉不成功怎么办 苹果手机打不开流量怎么办 苹果6流量打不开怎么办 苹果笔记本电脑打不开软件怎么办 苹果软件蜂窝打不开怎么办 苹果手机wifi打不开怎么办 苹果app变成韩语怎么办