zoukankan      html  css  js  c++  java
  • J-17 集合对象

    List接口

    ArrayList类
    Vector类
    LinkedList类
    泛型
    JDK5新特性

    ArrayList类

    ArrayList类概述

    底层数据结构是数组,查询快,增删慢
    线程不安全,效率高

    ArrayList案例

    • 存储字符串并遍历
    • 存储自定义对象并遍历

    Vector类

    Vector类概述

    底层数据结构是数组,查询快,增删慢
    线程安全,效率低

    Vector类特有功能

    public void addElement(Object obj) -- add()

    public Object elementAt(int index) -- get()

    public Enumeration elements() -- Iterator iterator()

    • boolean hasMoreElements() -- hasNext()
    • Object nextElement() -- next()

    注:Vector类是jdk1.0之后就有的,出现较早,后面对应的函数功能相似,是简化名称后的函数名,所以优先使用后面的函数。

    Vector案例

    • 存储字符串并遍历
    • 存储自定义对象并遍历

    LinkedList类

    LinkedList类概述

    底层数据结构是链表,查询慢,增删快
    线程不安全,效率高

    LinkedList类特有功能

    添加功能

    public void addFirst(Object e)
    public void addLast(Object e)

    获取功能

    public Object getFirst()
    public Object getLast()

    删除功能

    public Object removeFirst()
    public Object removeLast()

    LinkedList案例

    存储字符串并遍历
    存储自定义对象并遍历

    泛型

    泛型的概述

    泛型是一种特殊的类型,它把指定类型的工作推迟到代码声明并实例化类或方法的时候进行。
    也被称为参数化类型,可以把类型当作参数一样传递过来,在传递过来之前我不明确,但是在使用的时候我就用明确了。

    格式

    public class 类名<泛型类型1,…>
    

    注意:泛型类型必须是引用类型

    好处

    ① 优化了程序设计,提高了程序的安全性
    ② 将运行期遇到的问题转移到了编译期
    ③ 省去了类型强转的麻烦

    使用情况

    看API,如果类、接口、抽象类后面跟的是< E >,就说明要使用泛型。
    泛型一般在集合中使用。

    泛型的使用

    • 泛型类
      把泛型定义在类上

        格式:public class 类名<泛型类型1,…>
      

    注意:泛型类型必须是引用类型

    • 泛型方法
      把泛型定义在方法上

        格式:public <泛型类型> 返回类型 方法名(泛型类型 .)
      
    • 泛型接口
      把泛型定义在接口上

         格式:public interface 接口名<泛型类型1…>
      

    通配符

    • ?:任意类型,如果没有明确,那么就是Object以及任意的Java类了
    • ? extend E:向下限定,E及其子类
    • ? super E:向上限定,E及其父类

    JDK5新特性 -- 增强for

    总结

    自动拆装箱,泛型,增强for,静态导入,可变参数,枚举。

    增强for

    概述

    简化数组和Collection集合的遍历

    格式

    for(元素数据类型 变量 : 数组或者Collection集合) {
    	使用变量即可,该变量就是元素
    }
    

    分析

    • 好处:简化遍历,可替代迭代器
    • 注意事项:增强for的目标要判断是否为null

    集合遍历(三种)

    // 遍历集合
    // 迭代器
    	Iterator<String> it = array.iterator();
    	while (it.hasNext()) {
    		String s = it.next();
    		System.out.println(s);
    	}
    	System.out.println("------------------");
    
    	// 普通for
    	for (int x = 0; x < array.size(); x++) {
    		String s = array.get(x);
    		System.out.println(s);
    	}
    	System.out.println("------------------");
    
    	// 增强for
    	for (String s : array) {
    		System.out.println(s);
    	}
    

    静态导入

    格式

    格式:import static 包名….类名.方法名;
    

    直接导入到方法级别

    注意事项

    ① 方法必须是静态的
    ② 如果有多个同名的静态方法,容易不知道使用谁。这个时候要使用,必须加前缀。由此可见,意义不大,所以一般不用,但是要能看懂。

    可变参数

    概述

    定义方法的时候不知道该定义多少个参数

    格式

    修饰符 返回值类型 方法名(数据类型...  变量名){}
    public int sum(int... a){      }
    

    注意事项

    • 这里的变量a其实是一个数组
    • 如果一个方法有可变参数,并且有多个参数,那么,可变参数肯定是最后一个

    Arrays工具类中的一个方法

    public static List asList(T... a)
    T可以为任意引用类型。

  • 相关阅读:
    Java 程序流程语句
    Java 基本语法
    Java 环境搭建
    Spring事务管理
    AOP 与 Spring中AOP使用(下)
    python爬虫笔记之爬取足球比赛赛程
    python爬虫笔记之re.match匹配,与search、findall区别
    python爬虫笔记之re.compile.findall()
    python爬虫笔记之re.IGNORECASE
    跨站脚本攻击(selfxss)笔记(三)
  • 原文地址:https://www.cnblogs.com/android-lyz/p/5082743.html
Copyright © 2011-2022 走看看