A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

123wsd

初级黑马

  • 黑马币:55

  • 帖子:13

  • 精华:0

© 123wsd 初级黑马   /  2018-4-6 14:33  /  716 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Java集合

数组作为容器,可以存储基本数据类型,也可以存储引用数据类型,数组一旦定义出来,长度就固定了,而且也只能存储引用数据类型,用起来不太方便,需哦一就引出了集合的概念。
集合
集合的长度是可变的,集合中可以存储不同的数据类型,但是集合不能存储基本数据类型
集合中的方法
Collection:     包括      list     和 set
a/添加功能
boolean add(Object obj):添加一个元素
boolean addAll(Collection c):添加一个集合的元素  (给一个集合添加进另一个集合中的所有元素)
b/删除功能
   void clear():移除所有元素
   boolean remove(Object o):移除一个元素
   boolean removeAll(Collection c):移除一个集合的元素(移除一个以上返回的就是true) 删除的元素是两个集合的交集元素 ,如果没有交集元素 则删除失败 返回false
c/判断功能

   boolean contains(Object o):判断集合中是否包含指定的元素
   boolean containsAll(Collection c):判断集合中是否包含指定的集合元素(这个集合 包含 另一个集合中所有的元素才算包含 才返回true)

   boolean isEmpty():判断集合是否为空
d/获取功能,接口 Iterator<E> 迭代器(可以理解为遍历)

boolean hasNext()
如果仍有元素可以迭代,则返回 true
e/长度功能
      int size():元素的个数
g/把集合转换为数组
    toArray( )        System.out.println(collection.size());
但是要注意的是通过aslist方法把数组转换成集合后,这个集合就不能再添加元素了

List集合:  包括  ArrayList       Vector         LinkedList

允许元素重复
  void add(int index,E element): 在指定索引处添加元素
  E remove(int index):移除指定索引处的元素  返回的是移除的元素
  E get(int index):获取指定索引处的元素
  E set(int index,E element):更改指定索引处的元素 返回的而是被替换的元素
  subList(首索引,尾索引),根据首位索引截取集合中的元素
List的三个子类的特点

ArrayList  底层数据结构是数组,增删慢,查询快  线程不同步,数据不安全,效率高
Vector 底层数据结构也是数组,增删慢 查询快 线程同步,数据安全,效率慢
LinkedList 底层数据结构是链表,增删快 查询慢 线程不同步,数据不安全效率高
我们根据需要,如果对数据安全要求较高,建议采用Vector
还要考虑操作中查询多还是增删多
数组特点: 查询快 , 增删慢
链表特点:  查询慢 , 增删快

set接口:包含HashSet   LinkedHashSet     TreeSet
set集合的特点:元素是无序的,唯一的
HashSet(无序,唯一)

HashSet集合底层结构是哈希表,哈希表底层维护的是数组和链表
HashSet集合靠元素重写hashCode和equals方法来保证元素的唯一性
元素有序靠链表保证
元素唯一靠哈希表保证
如果元素不重写这两个方法,就无法保证唯一性
String和Integer默认重写了hashCode方法和equals方法

接口 Map<K,V>
将键映射到值的对象,一个映射不能包含重复的键,每个键最多映射一个值,K为键。V为值。map集合中,一个键只对应一个值,当键相同时值会覆盖,其中允许使用null键与null值,
map集合的数据结构只和键有关,与值无关
常用方法
HashMap<String, String> hm = new HashMap<>();
String put = hm.put("老大", "呵呵");//添加元素
String put2 = hm.put("张三", "哈哈");//键相同,值覆盖
String put3 = hm.put("张三", "呵呵");//输出结果:张三呵呵
hm.remove("老大");//移除一个键值对
hm.clear();//清空一个集合
boolean b = hm.containsKey("张三");//判断一个集合是否包含指定键
boolean v = hm.containsValue("哈哈");//判断一个集合是否包含指定值
boolean empty = hm.isEmpty();//判断一个集合是否为空
类 HashMap<K,V>
允许插入null键和null值
HashMap和Hashtable的区别:
  HashMap: 非同步,线程不安全,效率高.允许null值和null键
  Hashtable: 同步,线程安全 , 效率低.不允许null值和null键

3 个回复

倒序浏览
我来占层楼啊   
回复 使用道具 举报
我来占层楼啊   
回复 使用道具 举报
那我也占个楼层
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马