zoukankan      html  css  js  c++  java
  • 20200803_抽象类接口以及容器ArrayList、HashSet

    1、作业解析

    1.将如下字符串进行拆分

    TOM:20|Jack:22|Rose:24

    打印成如下形式:

    姓名:tom,年龄:20岁

    姓名:Jack,年龄:22岁

    姓名:Rose,年龄:24岁

    2.编写一个类,提供一个函数实现字符串反转功能,比如传入字符串“abcdefg”返回字符串“gfedcba”。

    public class Homework0803 {
        public static void main(String[] args) {
           // splitStr();
            reverseStr("hellolemon");
        }
    
        //作业一:
        public static void splitStr(){
            String str = "TOM:20|Jack:22|Rose:24";
            String[] arr1 = str.split("\|");
            for (String keyAndValue : arr1) {
                String[] arr2 = keyAndValue.split(":");
                System.out.println("姓名:"+arr2[0]+",年龄:"+arr2[1]);
            }
        }
    
        //作业二:
        public static void reverseStr(String str){
            String afterStr = "";
            char[] arr = str.toCharArray();
            for (int i = 0; i < arr.length; i++) {
                afterStr = arr[i]+afterStr;
            }
            //p y t h o n
            //p
            //yp
            //typ
            //...
            System.out.println(afterStr);
        }
    }

    2、抽象类-父类abstract,相当于模板,不能实例化,不能创建对象,没有方法体{},所以子类要实现父类的抽象方法

    子类可以继承抽象类,但必须实现抽象类中的全部抽象方法
    抽象方法

    • 只声明而未实现的方法,即不能有方法体
    • 使用abstract修饰符


    语法

    访问修饰符 abstract class 类名{
    public abstract void call();
    ...
    }

    作用
    从多个具有共性的类中抽取出抽象类,抽象类作为子类设计的通用模板,避免子类设计的随意性
    抽象父类提供子类的通用方法,将方法交由子类去实现
    关键字:abstract,extend

    3、接口-接口方法都是抽象的,如果接口中的方法你不写abstract,Java自动化的补上

     接口:规则,能力

      • 只能有抽象方法,一个类可以同时实现多个接口
      • 必须重写所有抽象方法
      接口与接口是继承,接口与类是实现
    • 接口是对继承的补充
    • 关键字:interface implements

    4、抽象类和接口的比较

    5、代码示例

     6、ArrayList-数组-八大数据类型的引用类型

    6.1 八大基本数据类型都有对应的引用类型 --包装类

    • int -> Integer
    • char -> Character
    • boolean ->Boolean
    • float ->Float
    • double ->Double
    • byte ->Byte
    • short ->Short
    • long ->Long

    容器支持的数据类型:引用类型 、不能支持基本的数据类型
    容器特点

    • 长度可变数组,提供很多方便的方法
    • 有序(可以通过索引来访问)、可重复
    • 泛型:规定集合存储的数据类型。

    6.2ArrayList常用Api

    • 创建list对象-ArrayList list= new ArrayList();
    • 添加数据-list.add(…);
    • 取出数据-list.get(index);
    • 移除数据-remove(…);
    • 获取list集合的大小-size();
    • 判空函数-isEmpty(…)
    • 判断是否包含某数据-contains(…)
    • 修改某个位置上的数据-set(…)

    迭代Arraylist
    1.通过for循环来迭代

    for(int i=0; i<list.size(); i++){
    System.out.println(list.get(i));
    }

    2.通过增强式循环(foreach)方式来迭代

    for(String str : list){
    System.out.println(str);
    }

    6.3 代码

    import java.util.ArrayList;
    public class ArrayListTest {
        public static void main(String[] args) {
            //1、创建ArrayList对象
            //泛型 -- 规定里面存储的数据类型,同时存储一种类型
            ArrayList<String> arrayList = new ArrayList<String>();
            //2、存储数据的 add 添加
            arrayList.add("hello");
            arrayList.add("lemon");
            arrayList.add("java");
            arrayList.add("python");
            // this is lemon class
            //3、取得数据
            /*System.out.println(arrayList.get(0));
            System.out.println(arrayList.get(1));
            System.out.println(arrayList.get(2));
            System.out.println(arrayList.get(3));*/
            //4、remove 移除数据
           // arrayList.remove("lemon");
            //arrayList.remove(1);
            /*System.out.println(arrayList.get(0));
            System.out.println(arrayList.get(1));
            System.out.println(arrayList.get(2));
            //IndexOutOfBoundsException  越界
            System.out.println(arrayList.get(3));*/
            //5、获取大小 size
            //System.out.println(arrayList.size());
            //6、判断集合是否为空
            //System.out.println(arrayList.isEmpty());
            //7、clear 清除集合中的全部数据
            /*arrayList.clear();
            System.out.println(arrayList.isEmpty());
            System.out.println(arrayList.size());*/
            //8、contains 判断是否包含某个值
            //System.out.println(arrayList.contains("lemon"));
            //9、set 修改值
            //arrayList.set(1,"test");
            //System.out.println(arrayList.get(1));
    
            //怎么一次性把集合当中的全部数据输出
            //1、foreach 增强式for循环
            /*for(String arr : arrayList){
                System.out.println(arr);
            }*/
            //2、普通for循环
            /*for(int i=0; i<arrayList.size(); i++){
                //int position = i+1;
                System.out.print("数据所在的位置:"+(i+1));
                System.out.println(" 对应的值:"+arrayList.get(i));
            }*/
    
        }
    }

    7、HashSet-要用到Iterator

    容器支持的数据类型:引用类型
    特点

    • 数据排列:无序 不能够通过索引来访问里面的数据
    • 数据重复性:不可重复

    7.1 HashSet常用Api

    • 创建set对象-HashSet set = new HashSet();
    • 添加数据-add(…)
    • 删除数据-remove(…)
    • 获取集合的大小-size()
    • 判断是否包含某数据-contains()
    • 判断集合是否为空-isEmpty()

    迭代HashSet
    1.通过foreach

    for(String arr : hashSet){
                System.out.println(arr);

    2.通过迭代器

    Iterator<String> ite = hashSet.iterator();
    while(ite.hasNext()){
    String ele = ite.next();
    System.out.println(ele);
    }

    7.2 代码

    import java.util.HashSet; 
    import java.util.Iterator;
    public class HashSetTest {
        public static void main(String[] args) {
            //1、创建HashSet对象
            HashSet<String> hashSet = new HashSet<String>();
            //2、添加数据 add
            hashSet.add("hello");
            hashSet.add("lemon");
            hashSet.add("java");
            hashSet.add("python");
            hashSet.add("lemon");
            
            //3、size获取到长度
            //System.out.println( hashSet.size());
            //4、remove 移除掉数据
            //hashSet.remove("lemon");
            //System.out.println( hashSet.size());
            //5、判断是否包含某数据
            //System.out.println(hashSet.contains("pythn"));
            //6、isEmpty 判断集合是否为空
            //System.out.println(hashSet.isEmpty());
            //7、清除集合中的全部数据
            //hashSet.clear();
            //System.out.println(hashSet.isEmpty());
            //遍历获取全部的数据
            //1、foreach循环
    /*        for(String arr : hashSet){
                System.out.println(arr);
            }*/
    
            //2、普通的for循环???索引 -no
            //2、迭代器 -- 对集合中的数据进行循环迭代
            /*Iterator<String> ite = hashSet.iterator();
            while(ite.hasNext()){
                System.out.println(ite.next());
            }*/
    
        }
    }
  • 相关阅读:
    JS代码判断IE不同版本
    极简技术类录--正则表达式
    Java读取系统Properties
    极简技术类录--maven
    极简技术类录--git
    JVM字节码增强
    如何避免死锁?
    有三个线程T1,T2,T3,怎么确保它们按顺序执行?
    编写两个线程,顺序输出自然顺序:1,2,3,4,...,99,100
    对文本单词进行技数,并倒序列出计数统计
  • 原文地址:https://www.cnblogs.com/shishibuwan/p/13763945.html
Copyright © 2011-2022 走看看