12-常用对象API(集合框架-Vector集合)
只是讲解了Vector迭代的特有方法而已,但是我们现在一般都不用了,只是作为了解而已
public static void main(String[] args) {
Vector v = new Vector();
v.addElement("abc1");
v.addElement("abc2");
v.addElement("abc3");
v.addElement("abc4");
Enumeration en =v.elements();
while(en.hasMoreElements()){
System.out.println("nextelment:"+en.nextElement());
}
Iterator it =v.iterator();
while(it.hasNext()){
System.out.println("next:"+it.next());
}
}
13-常用对象API(集合框架-LinkedList集合)
LinkedList link =new LinkedList();
link.addFirst("abc1");
link.addFirst("abc2");
link.addFirst("abc3");
link.addFirst("abc4");
// System.out.println(link);
// System.out.println(link.getFirst());//获取第一个但不删除。
// System.out.println(link.getFirst());
// System.out.println(link.removeFirst());//获取元素但是会删除。
// System.out.println(link.removeFirst());
while(!link.isEmpty()){
System.out.println(link.removeLast());
}
System.out.println(link);
// Iterator it =link.iterator();
// while(it.hasNext()){
// System.out.println(it.next());
// }
}
14-常用对象API(集合框架-LinkedList集合-练习(堆栈和队列))
下面讲一个在面试中经常会被出的面试题
/*
* 请使用LinkedList来模拟一个堆栈或者队列数据结构。
*
* 堆栈:先进后出 First In Last Out FILO
*
* 队列:先进先出 First In First Out FIFO
*
* 我们应该描述这样一个容器,给使用提供一个容器对象完成这两种结构中的一种。
*/
并不是需要你把这样一个效果演示完,而是需要你做一个这样的容器出来,是我要给你提供一个对象,这个对象就能实现,你怎么存进去,你调用我的方法时候就能怎么取出来,你得去把这种结构封装起来
这里面的代码就不贴出来了,先自己去做一下,
LinkedList:
addFirst();
addLast():
jdk1.6
offerFirst();//在此列表的开头插入指定的元素
offetLast();
getFirst();.//获取但不移除,如果链表为空,抛出NoSuchElementException.
getLast();
jdk1.6
peekFirst();//获取但不移除,如果链表为空,返回null.
peekLast():
removeFirst();//获取并移除,如果链表为空,抛出NoSuchElementException.
removeLast();
jdk1.6
pollFirst();//获取并移除,如果链表为空,返回null.
pollLast();
15-常用对象API(集合框架-ArrayList集合存储自定对象)
什么时候对象装箱也,就是在基本数据类型转换为引用数据类型的时候装箱,当引用数据类型和基本数据类型做运算的时候就是拆箱
这一讲的主要讲的是定义一个ArrayList,然后往这里面存入Person,然后再把这里面的数据遍历出来(这个例子就不贴出来了,自己去做一下)
16-常用对象API(集合框架-HashSet集合)
17-常用对象API(集合框架-哈希表_1)
在使用HashSet在存储元素的时候也,有一个hash算法
在往这个HashSet里面存元素的时候也,在保存之前也,它会根据这个元素的自身特点中,先算一下,这个元素保存在哪个位置上,然后,就保存在特定的位置上,如果要进行取元素的取元素的话也,也先将要取的这个元素进行hash算法的算,然后直接找到这个元素,这样是不是提高了效率了啊,但是有一个弊端就是不能保存重复的元素,这就是hash算法
18-常用对象API(集合框架-哈希表_2)
它这个判断元素相同的方式是什么大家要搞清楚
19-常用对象API(集合框架-HashSet存储自定义对象)
不是说保证唯一吗,怎么会出现这种情况也
那是因为我们没有重写hashCode和equals方法,如果我们重写了hashCode和equals方法都不会出现这种情况
20-常用对象API(集合框架练习)
这一讲的事例代码是ArrayListTest2.java里面,这我儿的singleDemo方法,这个里面演示的是使用的字符串,字符串也使用集合里面的contains方法来进行判断,是否包含这个对象
下面讲解ArrayList里面保存的是自定义对象
contains方法里面判断元素相同的依据是什么呢,内部是使用的equals方法来进行判断,那我们存储自定义对象的时候,只需要重写这里面的equals方法就可以了,像ArrayList他们在判断元素相同仅仅使用元素的equals方法
21-常用对象API(集合框架-LinkedHashSet集合)
这个时候也hashSet稍为有点不好就是,是不是无序的啊,我们想保证唯一还想有点序,这个就是LinkedHashSet的功能了
Demo事例的例子是LinkedHashSetDemo.java
Set:元素不可以重复,是无序。
Set接口中的方法和Collection一致。
|--HashSet:内部数据结构是哈希表 ,是不同步的,此类允许使用 null 元素。。
如何保证该集合的元素唯一性呢?
是通过对象的hashCode和equals方法来完成对象唯一性的。
如果对象的hashCode值不同,那么不用判断equals方法,就直接存储到哈希表中。
如果对象的hashCode值相同,那么要再次判断对象的equals方法是否为true。
如果为true,视为相同元素,不存。如果为false,那么视为不同元素,就进行存储。
记住:如果元素要存储到HashSet集合中,必须覆盖hashCode方法和equals方法。
一般情况下,如果定义的类会产生很多对象,比如人,学生,书,通常都需要覆盖equals,hashCode方法。
建立对象判断是否相同的依据。
22-常用对象API(集合框架-TreeSet集合)
只要对象想要进行比较,就实现这个comparble接口
|--TreeSet:可以对Set集合中的元素进行排序。是不同步的。
判断元素唯一性的方式:就是根据比较方法的返回结果是否是0,是0,就是相同元素,不存。
TreeSet对元素进行排序的方式一:
让元素自身具备比较功能,元就需要实现Comparable接口。覆盖compareTo方法。
如果不要按照对象中具备的自然顺序进行排序。如果对象中不具备自然顺序。怎么办?
可以使用TreeSet集合第二种排序方式二:
让集合自身具备比较功能,定义一个类实现Comparator接口,覆盖compare方法。
将该类对象作为参数传递给TreeSet集合的构造函数。
23-常用对象API(集合框架-TreeSet集合-Comparator比较器)
24-常用对象API(集合框架-TreeSet集合-二叉树).
25-常用对象API(集合框架-TreeSet集合练习-字符串长度排序