Java基础差缺补漏系列之集合系列1

java

我又回来啦!!!,今天带来基础差缺补漏系列之集合1

每日格言:

遇顺境,处之淡然,遇逆境,处之泰然!

集合

什么是算法和数据结构

算法:

  1. 可以解决具体问题。例如:1+2+3+4+5.。。+99+100

    流程=算法

  2. 有设计解决的具体的流程

    算法1:(1+100)× 50= 101 × 50–>高斯算法

  3. 有评价这个算法的具体指标

    有评价这个算法的具体的指标–>时间复杂度,空间复杂度(从数学角度考虑)


数据结构:如何组织管理数据的结构,按照某种规则结构来组织管理我们的数据

数据结构分为:

  1. 逻辑结构:–>思想上的结构–>卧室,厨房,卫生间–>线性表(数组,链表),图,树,栈,队列
  2. 物理结构:–>真实结构–>钢筋混凝土+牛顿力学–>紧密结构(顺序结构),跳转结构(链式结构)

以线性表为例:

线性表逻辑结构表述图:

线性表的特点:

线性表是n个数据类型相同的数据元素的有限序列,通常记作:a,ai-1,ai,ai+1

1.相同的数据类型

线性表中可以有n个相同属性的元素,比如可以都是数字,可以都是字符,相同类型意味着每一个元素占用相同的内存空间。

2序列(顺序性)

ai-1,ai,ai+1为例子,ai的前一位是ai-1,ai的后一位是ai+1,一般ai0为表头,除了表头和表尾元素外,任何一个元素有且仅有一个直接前驱和一个直接后继

3有限

线性表中的数据元素定义为n,n是个有限值,当n=0的时候就是线性表为空,在非空的线性表中每个数据元素都有唯一确定的序号,下标

逻辑结构和物理结构的关系

线性表逻辑,对应真实的如果是紧密结构,典型:数组;

线性表逻辑结构,对应的真实结构如果是跳转结构,典型为链表

什么是紧密结构?

在存储数据的时候选择相邻的位置存储,

以int数组为例,int 4位,下图所示:

优点:

寻址快–>查找元素快

缺点:

删除和增加元素效率低

什么是跳转结构?

以链表为例

单向链表:

每一个元素的位置除了存放自己的数据还要存放寻找下一个元素的地址

双向链表:

每个元素除了存放自己的数据,还存放了上一个元素的地址和下一个元素的地址

循环链表:

就是首元素和尾元素互相指向,首尾相连

跳转结构:

优点:删除元素,插入元素效率高,

缺点:查询元素效率地。为什么?

应为我如果像查找一个元素我要从上一个寻找,如果多的话,十分麻烦,数组寻址找是直接寻找,效率十分之快

集合前言

数组,集合都是对多个数据进行存储操作,简称为容器

PS:这里的存储是内存层面的存储,而不是持久化存储

数组:只能存放同一种类型的数据

,长度无法更改,只能放同一种类型的数据

一旦指定了长度,那么长度就被确定,不可以更改,删除增加效率低,无法直接判断数组的实际元素的数量,需要我们自己去写,存储为有序,可重复。

如何解决数组的缺点?

用于解决数组缺点的新的存数的数据结构—>集合

集合

我们有很多集合,为什么要学习这么多集合,应为不容的集合底层的数据机构不一样

将集合分为两种类型

存储方式:

一个一个数据的存储

一对一对数据的存数

colletion接口

  • 新增:add(E e)
  • 修改:
  • 删除:remove(Object o),clear()
  • 查看:iterator(),size()
  • 判断:contains(Object o),equals(Object o),isEmpty()
/* * 新增:add(E e) * 修改: * 删除:remove(Object o),clear() * 查看:iterator(),size() * 判断:contains(Object o),equals(Object o),isEmpty() * */


    public static void main(String[] args) {
   
        //接口不能创建对象:利用实现类创建
        Collection col = new ArrayList();
// 集合有一个特点,只能存放引用数据类型,不能是基本数据类型,
// 基本数据类型自动装箱,对应包装类
        col.add(18);
        col.add(12);
        col.add(15);
        System.out.println(col);
        List list = Arrays.asList(new Integer[]{
   2,1,3,4,5});
        col.addAll(list);
        System.out.println(col);
        col.clear();
        System.out.println(col);
        System.out.println("集合的数量:"+col.size());
        System.out.println("集合是否为空:"+col.isEmpty());
        boolean remove = col.remove(15);
        System.out.println(col);
        System.out.println("是否删除成功:"+remove);

        Collection col2 = new ArrayList();
        col2.add(18);
        col2.add(12);
        col2.add(15);

        Collection col3 = new ArrayList();
        col3.add(18);
        col3.add(12);
        col3.add(15);
        System.out.println(col2.equals(col3));

集合有一个特点,只能存放引用数据类型,不能是基本数据类型,那我们为什么加入基本类型没有报错?
解:基本数据类型自动装箱,对应包装类

遍历的两种方式
  1. ​ 增强for循环

            for (Object o : col) {
         
                System.out.println(o);
            }
    
  2. ​ 迭代器

            Iterator it = col.iterator();
            while (it.hasNext()){
         
                System.out.println(it.next());
            }
    

    迭代器简略执行原理:

全部评论

相关推荐

关于“实习生工资多少才算正常”,其实并没有一个放之四海而皆准的标准,但如果结合一线城市的生活成本、工作强度以及实习本身创造的价值来看,我个人认为6000 元左右应当是一个基本及格线,也就是每天 200 多元。如果能达到 300、400 元一天,甚至更高,那无疑是更理想的状态。首先,从现实成本看,房租、通勤、餐饮几乎都是刚性支出。低于这个水平的实习,往往意味着实习生需要用家庭或存款“倒贴”工作,这在长期来看并不合理。实习本质上是学习,但并不等于“廉价劳动力”,更不应该是经济压力的来源。其次,愿意给实习生更高薪资的公司,通常不会是差公司。这至少说明两点:一是公司资金相对充足,不是靠压缩人力成本勉强维持;二是公司认可实习生的价值,希望你真正参与业务、创造产出,而不是只做边角料工作。很多高薪实习往往伴随着更规范的培养体系、更高的信息密度和更真实的项目经验。当然,高工资并不等于一切,但它往往是一个重要信号。能给到 300、400 元一天甚至更多的公司,往往对效率、能力和长期发展更有追求,也更可能处在一个有前景的赛道中。总结来说,实习工资不仅是钱的问题,更是公司态度、实力和发展前景的体现。在条件允许的情况下,争取一份“付得起你时间”的实习,本身就是一种理性选择。
北国牛马:你是不是忘了你一周只能上五天班,月薪6000那你日薪就得300了,日薪200一个月也就4000,也就刚好覆盖生活成本了
实习生工资多少才算正常?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务