• 09_集合_第9天(StringBuilder、ArrayList集合)


    今日学习目标

    • 能够使用StringBuilder类的添加功能和反转功能
    • 能够使用数组存储自定义类型并遍历
    • 能够使用ArrayList集合的构造方法创建ArrayList集合对象
    • 能够使用ArrayList集合存储数据
    • 能够使用ArrayList集合中常用的方法
    • 能够使用ArrayList集合存储字符串并遍历
    • 能够使用ArrayList集合存储自定义对象并遍历
    • 能够将数组中的元素添加到集合中,并按要求打印到控制台上
    • 能够使用类作为形式参数和返回值

    第1章    StringBuilder类

    1.1 StringBuilder概述

      我们如果对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时,又浪费空间。而StringBuilder就可以解决这个问题。

        

    1.2 StringBuilder和String的区别?

    • String的内容是固定的。
    • StringBuilder的内容是可变的。

    1.3     构造方法

    • 无参数构造方法
      • public StringBuilder() 构造一个空的StringBuilder容器  
    • 带有字符串参数的构造方法
      • public StringBuilder(String str) 构造一个StringBuilder容器,并将字符串添加进去  
    public class Demo02StringBuilder {
        public static void main(String[] args) {
            //创建对象
            StringBuilder builder = new StringBuilder();
            //public StringBuilder append(任意类型)
            StringBuilder builder2 = builder.append("hello");
            System.out.println("builder:"+builder);//builder:hello
            System.out.println("builder2:"+builder2);//builder2:hello
            System.out.println(builder == builder2);//true
            /*
            builder.append("hello");
            builder.append("world");
            builder.append("true");
            builder.append("100");
            */
            //链式编程
            builder.append("hello").append("world").append(true).append(100);
            System.out.println("builder:"+builder);
            //public StringBuliderreverse()
            builder.reverse();
            System.out.println("builder:"+builder);
        }
    }

    1.5  与String的相互转换

        String转成StringBuilder:

      StringBuilder构造方法,或者append方法

        StringBuilder转成String:

      StringBuilder类的方法 public String toString()

    练习:数组元素格式拼接 举例:int[] arr = {1,2,3};结果:[1, 2, 3]

     

    public class Demo04StringBuilderTest {
        public static void main(String[] args) {
            //定义一个数组
            int[] arr = {1,2,3};
            //调用方法
            String s = arrayToString(arr);
            //输出结果
            System.out.println("s:" + s);
        }
            /*写方法实现拼接
             * 两个明确:
             *         返回值类型:String
             *         参数列表:int[] arr
             */
        public static String arrayToString(int[] arr){
            StringBuilder builder = new StringBuilder();
            builder.append("[");
            for(int x = 0;x < arr.length;x++){
                if(x==arr.length-1){
                    builder.append(arr[x]).append("]");
                }else{
                    builder.append(arr[x]).append(",");
                }
            }
            String result = builder.toString();
            return result;
        }
    }

    字符串反转

    import java.util.Scanner;
    /*
     * 字符串反转
     */
    public class Demo05StringBuilderTest {
        public static void main(String[] args) {
            //1.键盘录入一个字符串
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入一个字符串");
            String s = sc.nextLine();
            //3.调用方法
            String result = myReverse(s);
            //4.输出结果
            System.out.println("result:"+result);
        }
        /*
         * 2.写方法实现反转
         * 两个明确:
         *         返回值类型:string
         *         参数列表:String
         */
        public static String myReverse(String s){
            //String -- StringBuilder -- reverse() -- String
            StringBuilder builder = new StringBuilder(s);
            builder.reverse();
            String result = builder.toString();
            return result;
        }
    }

    判断字符串的对称性
      对称性是指一个字符串进行反转后,还和原来的字符串一致.
      例如: abcba,反转后还是abcba,反转前后是一致的

    public class Demo06StringBuilderTest {
        public static void main(String[] args) {
            String str = "abcba";
            boolean bool = symmetric(str);
            System.out.println(bool);
        }
        /*
         * 实现字符串对称判断
         * 返回布尔值
         *     参数类型:String
         *     返回值:boolean
         */
        public static boolean symmetric(String str){
            //创建StringBuilder对象
            StringBuilder builder = new StringBuilder();
            //将字符串添加到容器
            builder.append(str);
            //反转字符串
            builder.reverse();
            //获取反转后的字符串
            String str2 = builder.toString();
            System.out.println(str2);//abcba
            //String类equals方法判断两个字符串是否相等
            return str.equals(str2);//true
        }
    }

    第2章    ArrayList集合

    2.1 对象数组的案例

    创建一个学生数组,存储三个学生对象并遍历

    /*
     * 对象数组的案例
     *     创建一个学生数组,存储三个学生对象并遍历
     */
    public class Student {
        private String name;
        private int age;
        public Student(){
            
        }
        public Student(String name,int age){
            this.name = name;
            this.age = age;
        }
        public String getName(){
            return name;
        }
        public void setName(String name){
            this.name = name;
        }
        public int getAge(){
            return age;
        }
    }
    
    public class Demo01Array {
        public static void main(String[] args) {
            //创建数组
            Student[] students = new Student[3];
            //创建学生对象
            Student s1 = new Student("曹操",40);
            Student s2 = new Student("刘备",35);
            Student s3 = new Student("孙权",30);
            //把学生对象作为元素赋值给学生数组
            students[0] = s1;
            students[1] = s2;
            students[2] = s3;
            //遍历学生数组
            for(int x = 0;x<students.length;x++){
                Student s = students[x];
                //System.out.println(s);
                System.out.println(s.getName()+"---"+s.getAge());
            }    
        }
    }

    2.2 为什么出现集合类

    我们学习的是面向对象语言,而面向对象语言对事物的描述是通过对象体现的,为了方便对多个对象进行操作,我们就必须把这多个对象进行存储。

    而要想存储多个对象,就不能是一个基本的变量,而应该是一个容器类型的变量,在我们目前所学过的知识里面,有哪些是容器类型的呢?数组和StringBuilder。

    但是呢? StringBuilder的结果是一个字符串,不一定满足我们的要求,所以我们只能选择数组,这就是对象数组。

    而对象数组又不能适应变化的需求,因为数组的长度是固定的,这个时候,为了适应变化的需求,Java就提供了集合类供我们使用,由此可见集合的长度是可变的。

    2.3     ArrayList类的构造方法和成员方法

    • ArrayList<E>集合:大小可变数组的实现
      • <E>:是一种特殊的数据类型,泛型。
      • 在出现E的地方我们使用引用数据类型替换即可
      • 举例:ArrayList<String>,ArrayList<Student>
    • 构造方法
      • public ArrayList():默认构造
    • 成员方法
      • 添加元素  
        • public boolean add(E e):添加元素    
        • public void add(int index,E element):在指定的索引处添加一个元素    
    public class Demo01ArrayList {
        public static void main(String[] args) {
            //创建集合对象
            ArrayList<String> list = new ArrayList<String>();
            //add(E e):添加元素
            list.add("hello");
            list.add("world");
            list.add("java");
            //add.(int index,E element):在指定的索引出添加一个元素
            list.add(1, "android");
            System.out.println("array:"+list);
        }
    }

    更多成员方法

    • 获取元素
      • public E get(int index):返回指定索引处的元素  
    • 集合长度
      • public int size():返回集合中的元素的个数  
    • 删除元素
      • public boolean remove(Object o):删除指定的元素,返回删除是否成功  
      • public E remove(int index):删除指定索引处的元素,返回被删除的元素  
    • 修改元素
      • public E set(int index,E element):修改指定索引处的元素,返回被修改的元素  
    import java.util.ArrayList;
    public class Demo02ArrayList {
        public static void main(String[] args) {
            //创建集合对象
            ArrayList<String>array = new ArrayList<String>();
            //添加元素
            array.add("hello");
            array.add("world");
            array.add("java");
            //public E get(int index):返回指定索引处的元素
            System.out.println("get:"+array.get(0));
            System.out.println("get:"+array.get(1));
            System.out.println("get:"+array.get(2));
            //public int size():返回集合中的元素的个数
            System.out.println("size:"+array.size());//3
            //public boolean remove(Object o):删除指定的元素,返回删除是否成功
            System.out.println("remove:"+array.remove("world"));//true
            System.out.println("remove:"+array.remove("world"));//false        
            //public E remove(int index):删除指定索引处的元素,返回被删除的元素
            System.out.println("remove:"+array.remove(0));//hello        
            //public E set(int index,E element):修改指定索引处的元素,返回被修改的元素
            System.out.println("set:"+array.set(0, "android"));//java        
            //输出
            System.out.println("array:"+array);//[android]
        }
    }

    存储基本数据类型

    • byte         Byte
    • short        Short
    • int            Integer
    • long         Long
    • float         Float
    • long         Long
    • char         Character
    • boolean   Boolean 

    使用集合存储整数该怎么存储?对于基本数据类型集合是不存储的,因此不能写int,但是可以存储基本类型的包装类型Integer。

    public class Demo02ArrayListTest {
        public static void main(String[] args) {
            ArrayList<Integer> list = new ArrayList<Integer>();
            list.add(1);
            list.add(2);
            list.add(3);
            list.add(4);
            for(int x = 0;x<list.size();x++){
                Integer i = list.get(x);
                System.out.println(i);
            }
        }
    }

    1.1     ArrayList类案例

      练习一:存储字符串并遍历。

    public class Demo03ArrayList {
        public static void main(String[] args){
            //创建集合对象
            ArrayList<String>list = new ArrayList<String>();
            //添加元素
            list.add("hello");
            list.add("world");
            list.add("java");
            //获取元素
            //原始做法
            System.out.println(list.get(0));
            System.out.println(list.get(1));
            System.out.println(list.get(2));
            System.out.println("--------------");
            for(int i = 0;i < 3;i++){
                System.out.println(list.get(i));
            }
            System.out.println("--------------");
            //如何知道集合中元素的个数呢?size()
            for(int i = 0;i<list.size();i++){
                System.out.println(list.get(i));
            }
            System.out.println("--------------");
            //最标准的用法
            for(int i = 0;i<list.size();i++){
                String s = list.get(i);
                System.out.println(s);
            }
        }
    }

    练习二:
    给定一个字符串数组:{“张三丰”,“宋远桥”,“张无忌”,“殷梨亭”,“张翠山”,“莫声谷”},
    将数组中的元素添加到集合中,并把所有姓张的人员打印到控制台上。

    import java.util.ArrayList;
    public class Demo03ArrayListTest {
        public static void main(String[] args) {
            //定义字符串数组
            String[] strArray = {"张三丰","宋远桥","张无忌","殷梨亭","张翠山","莫声谷"};
            //创建集合对象
            ArrayList<String>list = new ArrayList<String>();
            //遍历字符串数组,获取到每一个字符串元素
            for(int x = 0;x<strArray.length;x++){
                //把获取到的字符串元素添加到集合
                list.add(strArray[x]);
            }
            //遍历集合
            for(int x = 0;x<list.size();x++){
                String s = list.get(x);
                //要判断每一个字符串元素是否以"张"开头,如果是,就输出在控制台
                if(s.startsWith("张")){
                    System.out.println(s);
                }
            }
        }
    }
  • 相关阅读:
    MySQL 知识点
    用PHP操作http中Etag、lastModified和Expires标签
    Open Flash Chart在php中的使用教程
    Cmake,source_group
    Cmake调用NSIS(一个可执行文件,其实就是一个编译器)编译NSIS脚本问题研究
    VS2010安装与测试编译问题(fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt)
    Cmake find_package()相关
    Cmake,链接一个外部(也可能是第三方,也可能是自己编译的)库
    逆向工程入门指南
    Cmake的install与file命令的区别
  • 原文地址:https://www.cnblogs.com/Haidrens/p/10142339.html
Copyright © 2020-2023  润新知