首页技术文章正文

java基础之集合【黑马java培训】

更新时间:2019年07月26日 11时15分04秒 来源:黑马程序员论坛

集合可以说是java中最常用类,学好集合对后续学习java事半功倍。
集合分为  单列集合(顶级接口Collection)和双列集合(顶级接口Map);
Collection没有具体的实现,有List和 Set两个子接口
List特点:
  • 有索引
  • 可以存储重复元素
  • 元素存取有序

List主要的实现类有ArrayList、LinkedList和Vector(了解)
  • ArrayList集合
            底层是数组结构实现,查询快、增删慢
  • LinkedList集合
            底层是链表结构实现,查询慢、增删快

List三种遍历方式(以ArrayList举例)
先插入元素
List<T> list= new ArrayList<>();
list.add(t1);
list.add(t2);
list.add(t3);
迭代器遍历
Iterator<T> iterator = list.iterator();
while(iterator.hasNext()){
    T t = iterator.next();
}
普通for循环(因为List有索引所以可以使用get(索引)来获取元素)
for (int i = 0; i < list.size(); i++) {
    T t=list.get(i);
}
增强for循环(底层原理还是迭代器)
for (T t : list) {
    //t就是我们 每次遍历到的元素;
}Set特点
  • 元素存取无序
  • 没有索引
  • 不能存储重复元素

Set 的主要的实现类有HashSet、LinkedHashSet、TreeSet
  • HashSet
          底层数据结构是哈希表,对集合的迭代顺序不作任何保证,不保证存储和取出的元素顺序一致,没有带索引的方法,不包含重复元素的集合
  • LinkedHashSet
           哈希表和链表实现的Set接口,具有可预测的迭代次序,由链表保证元素有序,没有重复的元素
  • TreeSet
           底层是红黑树,元素有序,不包含重复元素的集合
Set集合的两种遍历方式(以hashSet举例)
添加元素
Set<T> set= new HashSet<>();
set.add(t1);
set.add(t2);
set.add(t3);
迭代器遍历
Iterator<T> iterator = set.iterator();
while(iterator.hasNext()){
    T t = iterator.next();
}

增强for循环
for(T t:set){
//t就是我们遍历到的每一个元素
}
Map集合的特点
  • 键值对映射关系
  • 一个键对应一个值
  • 键不能重复,值可以重复
  • 元素存取无序

Map我们常用的实现类是HashMap
Map的两种遍历方式
插入元素
Map<K,V> map= new HashMap<>();
map.put(k1,v1);
map.put(k2,v2);
map.put(k3,v3);
通过键找值方式(遍历set使用增强for)
Set<K> keys=map.getKeys();
for(K k:keys){
V v= map.get(k);
//k是我们遍历到的每个键,v是我们通过map.get(K)找到的值
}
通过键值对集合遍历
Set<Map.Entry<K,V>>  entries= map.getEntrySet();
for(Map.Entry<K,V>  entry: entries){
K k= entry.getKey();
V v= entry.getValue();
//entry是我们每一个键值对组合,通过getKey找到k,getValue()得到v;
}
以上是我们集合中最重要的 知识;
最后再说一下泛型
  • 泛型概述
            是JDK5中引入的特性,它提供了编译时类型安全检测机制,该机制允许在编译时检测到非法的类型
    它的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,然后在使用/调用时传入具体的类型。这种参数类型可以用在类、方法和接口中,分别被称为泛型类、泛型方法、泛型接口
  • 泛型定义格式

    • <类型>:指定一种类型的格式。这里的类型可以看成是形参
    • <类型1,类型2…>:指定多种类型的格式,多种类型之间用逗号隔开。这里的类型可以看成是形参
    • 将来具体调用时候给定的类型可以看成是实参,并且实参的类型只能是引用数据类型

  • 泛型的好处

    • 把运行时期的问题提前到了编译期间
    • 避免了强制类型转换





推荐了解热门学科

java培训 Python人工智能 Web前端培训 PHP培训
区块链培训 影视制作培训 C++培训 产品经理培训
UI设计培训 新媒体培训 产品经理培训 Linux运维
大数据培训 智能机器人软件开发




传智播客是一家致力于培养高素质软件开发人才的科技公司“黑马程序员”是传智播客旗下高端IT教育品牌。自“黑马程序员”成立以来,教学研发团队一直致力于打造精品课程资源,不断在产、学、研3个层面创新自己的执教理念与教学方针,并集中“黑马程序员”的优势力量,针对性地出版了计算机系列教材50多册,制作教学视频数+套,发表各类技术文章数百篇。

传智播客从未停止思考

传智播客副总裁毕向东在2019IT培训行业变革大会提到,“传智播客意识到企业的用人需求已经从初级程序员升级到中高级程序员,具备多领域、多行业项目经验的人才成为企业用人的首选。”

中级程序员和初级程序员的差别在哪里?
项目经验。毕向东表示,“中级程序员和初级程序员最大的差别在于中级程序员比初级程序员多了三四年的工作经验,从而多出了更多的项目经验。“为此,传智播客研究院引进曾在知名IT企业如阿里、IBM就职的高级技术专家,集中研发面向中高级程序员的课程,用以满足企业用人需求,尽快补全IT行业所需的人才缺口。

何为中高级程序员课程?

传智播客进行了定义。中高级程序员课程,是在当前主流的初级程序员课程的基础上,增加多领域多行业的含金量项目,从技术的广度和深度上进行拓展“我们希望用5年的时间,打造上百个高含金量的项目,覆盖主流的32个行业。”传智播客课程研发总监于洋表示。




黑马程序员热门视频教程【点击播放】

Python入门教程完整版(懂中文就能学会) 零起点打开Java世界的大门
C++| 匠心之作 从0到1入门学编程 PHP|零基础入门开发者编程核心技术
Web前端入门教程_Web前端html+css+JavaScript 软件测试入门到精通


在线咨询 我要报名
和我们在线交谈!