有关集合框架的相关知识

  • 集合框架

  • 1. Collection接口
    • 1.1 集合框架的顶级接口
    • 1.2 是Set和List的父接口
    • 1.3 但不是Map的父接口
  • 集合中只能添加引用类型数据
  • 2. List接口
    • 2.1 特点:有序、对象可以重复 ?
      • 1)有序:元素添加顺序于元素输出的顺序一致
      • 2)不唯一性:可以添加重复元素
    • 2.2 遍历方式
      • 2.2.1 下标
        • for (int i = 0; i < lst.size(); i++) {
          •  
            •  
              • System.out.println(lst.get(i));
            • }
      • 2.2.2 foreach(>=jdk1.5)
        • for (Object object : lst) {
          •  
            •  
              • System.out.println(object);
            • }
      • 2.2.3 迭代器Iterator(原理)
        • //获取迭代器
          •  
            • Iterator it = lst.iterator();
            • //重点
            • //hasNext():判断迭代器钟的下一个元素是否存在,如果存在则为TRUE,不存在则为FALSE
            • //next():移动下标并取出当前元素
            • //循环遍历
            • while(it.hasNext()) {
              • Object val = it.next();
              • System.out.println(val);
            • }
    • 2.3 List优化
      • 初始容量10,负载因子1.5
      • 指定初始容量
      • 计算公式 容器大小*负载因子
      • 向下取整
    • 2.4 List元素删除
      • 正向删除
        • int list=lst.size();
          •  
            • for (int i = 0; i < list; i++) {
              • lst.remove(0);
            • }
      • 反向删除
        • int list=lst.size()-1;
          •  
            • for (int i = list; i >=0; i--) {
              • lst.remove(i);
            • }
      • 迭代器删除
        •  
          • ListIterator it = lst.listIterator();
            • while(it.hasNext()) {
              • it.next();
              • it.remove();
            • }
  • 3. 泛型
    • JDK1.5之后
    • 以类型作为参数的类就叫泛型
    • 作用:提高程序健壮性,简化代码
    • 泛型的默认值是Object
  • 4. 装箱、拆箱
    • 值类型->引用类型 装箱
      • int a=10;
        •  
          • Integer b=new Integer(a);
    • 引用类型->值类型 拆箱
      • int c=b.intValue();
    • jdk1.5之后引入了自动装箱及自动拆箱功能
  • 5. ArrayList、LinkedList、Vector区别
    • ArrayList:以连续的数组结构存储数据,查询快(下标)、增删改慢
    • LinkedList:以链表的结构存储数据,查询慢、增删改快
    • Vector:增删改查都慢,已过时
  • 6.Set
    • 1.1 特点:无序、对象不能重复
      • 1无序:元素添加的顺序与输出的顺序不一致
      • 唯一:数据是被过滤啦
        • 在没有重写equals方法之前,默认比较的是object类型(引用类型),实际比较的是内存地址
        • set.equals("");
          • 在重写equals方法之后,先进行hashcode值是否相同,在比较equals方法
          • 第一种:hashcode值相同,在进行equals比较
          • 第二种:hashcode 值不同,直接返回,不进行equals比较
    • 1.2 遍历
      • 1.2.1 foreach
      • 1.2.2 迭代器
    • 1.3 常用实现类
      • HashSet
        • 1)元素是没有顺序的
        • 2)元素是不重复的
      • TreeSet:根据某种(规则)对里面的元素进行排序
        • 自然比较接口: java.lang.Comparable
        • 比较器: java.util.Comparator
        • String以AscII码进行比较,返回差值
      • LinkedHashSet:
        • 1)元素是有顺序的
        • 2)元素是不重复的
        • 3)底层数据结构是按照链表的结构存储的 Linked
    • hashCode
    • 队列 Queue:表示一个先入先出的数据结构
    • 堆栈 Stack:表示一个先进后出的数据结构
      • 压:push
      • 弹:pop
  • map集合
    • 1. Map
      • 1.1 特点:无序、以键值对的形式添加元素,键不能重复,值可以重复 它没有继承Collection接口
      • 1.2 遍历
        • 1.2.1 先取出保存所有键的Set,再遍历Set即可(2种)
          • Set keys = map.keySet();
            •  
              • System.out.println("----------获取所有的keys----------");
              • keys.forEach(System.out::println);
              • //2)获取所有的values(可以添加重复元素)
              • Collection values = map.values();
              • System.out.println("---------------获取所有值-------------");
              • values.forEach(System.out::println);
        • 1.2.2 先取出保存所有Entry的Set,再遍历此Set即可
          • Set> entrySet = map.entrySet();
            •  
              • System.out.println("----------获取到所有键值对entrySet-----------");
              • /*for (Entry entry : entrySet) {
                • System.out.println(entry);//获取到所有键值对
                • System.out.println(entry.getKey());//获取到key
                • System.out.println(entry.getValue());//获取得到values
              • }*/
    • 2.HashMap与Hashtable之间的区别(重点)
      • 同步(synchronized)既排队 线程安全的 hashtable
      • 异步 线程非安全的 hashmap
      • 地狱回调
    • 3. 其它
      • 3.1 Collections:帮助类,提供一组静态方法操作Collection集合
        • Collections.sort(lst, new Comparator>() {
          •  
            •  
              • @Override
              • public int compare(Entry a, Entry b) {
                • return -(a.getValue().hashCode()-b.getValue().hashCode());
              • }
            • });
            • lst.forEach(s->{
              • System.out.println(s);
            • });
      • 3.2 Arrays:工具类,提供了一组静态方法操作数组
        • String names="zs,ls,ww";
          •  
            • String[] name=names.split(",");
            • List ls = Arrays.asList(name);
            • System.out.println(ls);
            • Integer[] ages= {13,14,44};
            • String str=Arrays.toString(ages);
            • System.out.println(str);

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值