015_集合框架
Posted a276665092
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了015_集合框架相关的知识,希望对你有一定的参考价值。
集合
由数组引入,和数组进行对比分析
- 概念:对象的容器,存储对象的对象,克代替数组
- 数组本身也是对象,可以存对象,集合也可以,因此是一种对数组的替代。
- 特点:容器的工具类,定义了对多个对象进行操作的常用方法。
- 集合比数组功能更强大,指的是封装了很多操作对象的方法,因此可以作为一个工具使用。
位置:java.util.* 包下
总结:集合是什么?集合是对象的容器,同时集合也是我们对数据操作时的工具!
集合基础
集合的体系
Collection父接口
Collection的抽象方法,是所有子接口以及实现类共性的方法,具有最大的普遍性
List集合
list子接口的特点与特有方法
通过查看源码的形式,验证说明list底层是数组实现的形式,进而结合数组特点掌握其方法
--------------------------——————————————————————-----------------------
List作为Collection的子接口,有三个实现类
ArrayList:主要实现类。语法结构: ArrayList list = new ArrayList(); 特点:①数组结构实现,查询快,增删慢(增删一个元素,后面的元素都要移动位置) ②JDK1.2版本,运行效率块、效率不安全(对比另一个实现类Vector的add方法讲解) Vector: 特点:①数据结构实现,查询快,增删慢(方法和ArrayList类似); ②JDK1.0版本,运行效率慢、线程安全(主要区别在于一个关键字synchronized,可举例说明线程安全和效率的关系) LinkedList: 链表结构实现,增删快,查询慢。通过图示对比链表和顺序表的区别
Ps:数组里的数据类型是一致的,而集合中的数据类型是object,这样在应用中是否存在问题?
-
-
特点:
-
编译时即可检查,而非运行时抛出异常。
-
访问时,不必类型转换(拆箱)。
-
-
实例泛型 举例: class MyClass<E>{//此时的E就是泛型的一个占位符,源码中常见的有 E T K V 等 //定义一个实例方法,把泛型作为参数传递 public void m1(E e){ } } 实例泛型在创建对象时具体指明泛型的类型 比如: MyClass<Integer> mc = new MyClass<Integer>();//此时的泛型就指定为整型 mc.m1(123); //同样可以指定为其它类型 MyClass<Double> mc2 = new MyClass<Double>(); mc2.m1(12.3);
接口泛型 举例: interface MyInterface<T>{ void m2(T t);//把泛型类型作参数传递给抽象方法 } class MyImplClass implements MyInterface<Byte>{ //在写实现类的时候指明具体的泛型类型 @Override public void m2(Byte t){ } }
静态泛型 举例: class MyStaticClass{ public static<E> void method(E e){ System.out.println(e.getClass());//会打印具体传递过来形参的值 } } //在实际调用静态方法时,把具体类型传递 MyStaticClass.method(123); //class java.lang.Integer MyStaticClass.method(12.3);//class java.lang.Double //此时什么类型都可以接收,但在方法内部会有区别 另,可对静态泛型进行约束 class MyStaticClass{ public static<E extends Animal & Comparable> void method(E e){ // 此时能传进来的类型必须满足两个条件即:继承Animal类,并且实现了Comparable接口(可排序),否则编译错误 } } 1)<? extends T>:表示T类或者T类的子类 2)<? super T>:表示T类或者T类的父类 3)<?>:表示任意类型
-
-
方法:
-
public static void reverse(List<?> list) //反转集合中元素的顺序
-
public static void shuffle(List<?> list) //随机重置集合中元素的顺序
-
-
代码展示这三个方法,其中sort方法要联想数组的排序一起学习。Arrays 里 只是处理数组类型的排序,集合工具更强大。
Collections.sort() 是对集合元素的排序,源码如下: public static <T extends Comparable<? super T>> void sort(List<T> list) {//要求传递过来的必须是实现排序接口 list.sort(null); } //Integer String 都是实现了Comparable接口的(参考源码) //可以举一个自定义的类,没有实现Comparable接口,此时就不能作为参数传递进来
以上是关于015_集合框架的主要内容,如果未能解决你的问题,请参考以下文章
015.CI4框架CodeIgniter数据库操作之:带参数查询数
ANDROID_MARS学习笔记_S02_015_Gson解析json串为对象集合