【七日阅书】3 字符串、数组、集合、泛型《Java程序设计与计算思维》

举报
小雨青年 发表于 2022/03/29 01:09:50 2022/03/29
【摘要】 目录 一、前情提要二、字符和字符串三、数组四、泛型和集合1.泛型2.集合1.单向链表 LinkedList2.动态数组 ArrayList3.HashSet4.TreeSet5.HashMap6....

一、前情提要

【七日阅书】1 计算思维和Java特性《Java程序设计与计算思维》_Code Metaverse-CSDN博客

【七日阅书】2 Java的数据类型和流程控制《Java程序设计与计算思维》_Code Metaverse-CSDN博客

二、字符和字符串

上次说的是基本类型,但是基本类型不好操作,官方封装了一些类型,被称为类类型,他们可以使用一些方法,实现常用的操作。

字符串分为两种,他们是并列的,不是继承关系,这点要注意。

  • Sting 字符串
  • StringBuffer 字符串缓冲区

其中,字符串缓冲区更适合频繁的字符串变更操作。

image-20211203152233135

其实常见的操作都可以通过IDE提示出来,根据直觉去使用即可,下面列出实际代码和常用的方法。

       //字符
        char charDemo1 = 'x';
        Character charDemo2 = new Character('x');

        //字符串
        String stringDemo1 = "test";
        String stringDemo2 = new String("test");

        stringDemo2.length(); //获取长度
        stringDemo2.concat(" user"); //拼接字符串
        stringDemo2.toLowerCase(); //转小写
        stringDemo2.compareTo(stringDemo1); //对比
        stringDemo2.substring(1,3); //截取

        //字符串缓冲区
        StringBuffer stringDemo3 = new StringBuffer("test");
        stringDemo3.append(" user"); //追加
        stringDemo3.insert(2,"u"); //插入
        stringDemo3.delete(2,3); //删除
        stringDemo3.length(); //获取长度
        stringDemo3.substring(0,2); //截取

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

三、数组

数组的特点

  • 所有元素的类型必须一致
  • 有序写入
  • 必须指定初始大小
        //数组,必须指定大小
        String[] arrDemo1 = new String[3];
        arrDemo1[0] = "str1";
        arrDemo1[1] = "str1"; //值可以重复
        arrDemo1[2] = "str1";

        String[] arrDemo2 = arrDemo1.clone(); //复制 克隆
        Arrays.fill(arrDemo2,"test2"); //Array类的使用

        UserBo[] arrDemo3 = new UserBo[5]; //对象数组,不是只能用基本类型

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

java.util.Arrays类可以使用,提供一些便捷的数组操作。

数组不是只能调用基本类型的,自定义的类也是可以的。

四、泛型和集合

前面的字符串和数组都是毕竟基本的,数组的限制多一些,字符串的操作并不多。

泛型、集合,是本次读书的重点内容,在实际工作中的用的地方也是最多的。

1.泛型

如何理解泛型?泛型可以是任意一种数据类型。泛型可以让方法接收不同数据类型的参数,

        //泛型可以接收任何参数
        Gengric<String> aDemo1 =new Gengric<String>();
        aDemo1.setDemo1("string");
        //不只是基本数据类型
        Gengric<UserBo> aDemo2 =new Gengric<UserBo>();
        UserBo userBo = new UserBo();
        aDemo2.setDemo1(userBo);

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

2.集合

集合是非常重要的概念。

image-20211203164618100

1.单向链表 LinkedList

特点

  • 所有节点都知道下一个节点的位置,不知道上一个
  • 不需要指定长度

image-20211203165330580

        LinkedList<String> aDemo3 = new LinkedList<>();
        aDemo3.add("str1"); //插入
        aDemo3.get(0); //获取
        aDemo3.addFirst("str2"); //头部添加
        aDemo3.addLast("str3"); //尾部添加
        aDemo3.size(); //长度

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

2.动态数组 ArrayList

特点

  • 可以存放不同对象
  • 不需要指定长度

image-20211203170144315

ArrayList aDemo4 = new ArrayList<>();
aDemo4.add(userBo);
aDemo4.add("str5");
aDemo4.add(100); //可以加入不同数据类型

  
 
  • 1
  • 2
  • 3
  • 4

3.HashSet

特点

  • 排列顺序和加入不同
  • 元素不能重复
  • 数据类型必须一致
HashSet<Integer> aDemo5 = new HashSet<>();
aDemo5.add(1);
aDemo5.add(2);

  
 
  • 1
  • 2
  • 3

4.TreeSet

TreeSet是以树为数据结构存储数据的。

特点

  • 元素不能重复
  • 插入即排序
        TreeSet<Integer> aDemo6 = new TreeSet<>();
        aDemo6.add(20);
        aDemo6.add(10);
        aDemo6.add(50);

  
 
  • 1
  • 2
  • 3
  • 4

5.HashMap

特点

  • key不能重复
  • 不会维持插入顺序
        HashMap<Integer,String> aDemo7 = new HashMap<>();
        aDemo7.put(5,"str8");
        aDemo7.put(1,"str9");
        aDemo7.put(3,"str10");

  
 
  • 1
  • 2
  • 3
  • 4

6.TreeMap

特点

  • key不能重复
  • 插入即排序
        TreeMap<Integer,String> aDemo8 = new TreeMap<>();
        aDemo8.put(5,"str8");
        aDemo8.put(1,"str9");
        aDemo8.put(3,"str10");

  
 
  • 1
  • 2
  • 3
  • 4

五、总结

不同的数据类型,对数据的处理方式不同,占用的系统资源也不同。

这部分必须熟练掌握使用,以便在合适的场景使用合适的数据结构。

六、源码地址

小雨青年 / Java Demo · CODE CHINA (gitcode.net)

文章来源: coderfix.blog.csdn.net,作者:小雨青年,版权归原作者所有,如需转载,请联系作者。

原文链接:coderfix.blog.csdn.net/article/details/121703793

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。