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

猴羊iiii

初级黑马

  • 黑马币:

  • 帖子:

  • 精华:

hello!
作为新人第一次发帖,心里更多的是激动与彷徨,首先,自身的知识储备严重不足,也就不具备侃侃而谈的资本,想来想去,将近期学过的东西简单整合一下,方便自己温习,也方便和我一样的新人梳理总结。

十分感谢黑马,将我这个门外汉带入一个全新的世界,在编程的世界中,所有的代码都很严谨,相比其他的学科来讲更讲道理一些,每一步骤都很有逻辑,这就是他迷人的地方,闲话少说,进入正题。

java基础中,集合和数组是非常重要的知识,作为载体,各有各的用途,集合与数组最方便的地方在于,一个数组的长度是固定的,往往在定义好一个数组之后,你无法像集合一样随意的添加,我本人很喜欢使用集合,
集合的顶层接口是collection , 下面包括 List 接口 和 Set接口 这两个集合有一定的区别,  List集合 存取有序,有索引,可以重复  Set集合 存取无序 无索引 不可重复 但是在平时的应用中 Set集合也可以使用索引的。
List集合 底层包括我们最常用的 ArrayList集合,它的特点是查询快,但是增删比较慢,因为底层是数组结构,对数组进行增删会造成其他元素大规模的移动,所以比较慢。   List集合还包括LinkedList 他的底层是链表结构,链表结构的特点就是增删很方便,只需要修改地址就可以实现增删,但是他的缺点也很明显,查询慢,需要从头结点开始根据地址一个一个查找,非常浪费时间,所以,建议新手们根据需要进行选择. Set集合 底层有HashSet ,听说这个集合底层有特有的Hash算法,具体是什么我就不了解了。
Set集合 在存储时,我们会考虑到一些新的东西,因为元素唯一,所以我们要思考如何使Set集合存储自定义对象元素唯一, 我们需要重写equals方法和hashcode方法,hashCode方法其实时用来提高效率,我们通过比较两个对象的哈希码值,如果不同,直接结束判断,将元素存储到集合中,如果哈希码值相同,在比较地址值或者是调用equals方法进行比较。地址值相同或者equals方法比较相同,结束判断,不存储该元素。只有地址值不同,并且equals方法比较也不同,才会存储该元素。相信大家应该都会快速生成这两种方法吧,其实这个东西我们也需要仔细阅读,要了解它的核心思想。
最后,带领大家一起复习一下两种集合的遍历方法
ArrayList<String> list = new ArrayList<>();
       
                1. for循环+get方法
                for(int i = 0;i < list.size();i++){
                        System.out.println(list.get(i));
                }
                2. 将集合转换成数组遍历
                String[] arr = list.toArray(new String[list.size()]);
                for(String s: list){
                        System.out.println(s);
                }
                3. 使用迭代器
                Iterator<String> it = list.iterator();
                while(it.hasNext()){
                        System.out.println(it.next());
                }
                4. 列表迭代器
                ListIterator<String> lit = list.listIterator();
                while(lit.hasNext()){
                        System.out.println(lit.next());
                }
                5. 增强for循环
                for(String str : list){
                        System.out.println(str);
                }

HashSet<String> set = new HashSet<>();
                       
                        1.转成数组
                        String[] arr = set.toArray(new String[set.size()]);
                        for(String s : arr){
                                System.out.println(s);
                        }
                        2.迭代器
                        Iterator<String> it = set.iterator();
                        while(it.hasNext()){
                                System.out.println(it.next());
                        }
                        3.增强for循环
                        for(String str : set){
                                System.out.println(str);
                        }

增强for循环是非常方便的。

这次先简单的说一下吧,实力有限,太强大的东西也说不出来,来一点最基础的,学习还在继续,以后我还会经常发贴,不为别的,和大家一起学习,而且在我帖子中出现什么错误,也有大神可以给指正一下,收益良多,下次我们一起来总结一下 Map集合 以及 I/O流,希望大家多多支持!

评分

参与人数 1黑马币 +5 收起 理由
xutian4500 + 5 赞一个!

查看全部评分

1 个回复

倒序浏览
写的很好,太棒了,
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马