------- android培训java培训、期待与您交流! ----------
枚举就是Vector特有的去除方式,其实枚举和迭代是一样的,因为枚举的名称以及方法的名称都过长,所以被迭代器取代了
LinkedList特有方法:addFirst()
addLast();
removeFirst(),removeLast()
getFirst()获取元素,但是不删除元素
removeFirst()获取元素,但是删除元素,如果集合中没有元素,会出现NoSuchElementException
使用LinkedList模拟一个堆栈或者队列数据结构
堆栈:先进后出,如同一个杯子
队列:先进先出
为什么要封装,对外提供一个简单的接口,去除ArrayList中的重复元素
TreeSet排序的第一种方式:让元素自身具备比较性,元素需要实现Comparable接口,覆盖compareTo方法
TreeSet的第二种排序方式,当元素自身不具备比较性时,或者具备的比较性不是所需要的,这是需要让容器自身具备比较性,定义了比较器,将比较器对象作为
当两种排序都存在时,以比较器为主,定义一个类,实现Comparator接口,覆盖compare方法.
字符串本身具备比较性,但是它的比较方式不是所需要的
泛型格式:通过<>来定义要操作的引用数据类型,在使用java提供的对象时,什么时候写泛型呢?通常在集合框架中很常见,只要见到<>就要定义泛型,其实<>就是用来接收类型的,当使用集合时,将集合中要存储的数据类型做为参数传递到<>中即可.
泛型类定义的泛型,在整个类中有效,如果被方法使用,那么泛型类的对象明确要操作的具体类型后,所有要操作的类型就已经固定了,为了让不同方法可以操作不同类型,而且类型还不确定,那么可以将泛型定义在方法上.
Public<T> void show(T t)
特殊之处:静态方法不可以访问类上定义的泛型,如果静态方法操作的引用数据类型不确定,可以将泛型定义在静态方法上
泛型定义在接口上
泛型的限定
?extends E 可以E及其子类型
?super E 可以为E及其父类型
对象与类
在传统的程序中,算法是第一位的,数据结构是第二位的,首先要确定如何操作数据,然后再决定如何组织数据,以便于数据操作,OOP却调换了这个次序,数据放在第一位,然后再考虑操作数据的算法。
构造器的名字应该与类名相同
GregorianCalendar产生日历的方法:
1、 new GregorianCalendar(1999,11,31)注意在日历中月份是从0开始的,所以11代表12月
2、 new GregorianCalendar(1999,Calendar.December,31,23,59,59)
对实体类做出修改的方法称为更改器方法,仅访问实体类而不进行修改的方法被称为访问器方法。
构造器:构造器与类同名,在构造类的对象时,构造器被运行,比便将实体类初始化为所希望的状态。
构造器与其它方法有一个重要的不同,构造器总是伴随着new操作符的执行被调用,而不能对一个已经存在的对象调用构造器来达到重新设置实体类的目的。
构造器的特点:构造器与类同名
每个类可以有一个以上的构造器
构造器可以有0个、1个或1个以上的参数
构造器没有返回值
构造器总是伴随着new操作一起调用
ArrayList<? extendsPerson> person及其子类都可以
ArrayList<? superStudent> student及其父类
获取map集合中所有的值
Collection<String>coll=map.values();
Map中添加元素,如果出现添加时,出现相同的键,那么后添加的键会覆盖前面的值。
Map集合的两种取出方式:
1、 keySet将map中所有的键存入到set集合,因为set具备迭代器,所以可以迭代方式取出所有的键,再根据get方法,获取每一个键对应的值。
Map集合的取出原理:将map集合转成set集合,再通过迭代器取出.
2 Set<Map.Entry<K,V>>
将map集合中的映射关系取出,存入到Set集合中