黑马程序员_JavaSE基础17 之 集合框架 Vector LinkedList ArrayList HashSet LinkedHasSet TreeSet
2012-09-17 19:21
621 查看
----------------------android培训、java培训、期待与您交流!---------------------
JavaSE_17笔记
Java语言基础之集合框架VectorLinkedListArrayListHashSetLinkedHasSetTreeSet
1、集合框架之Vector集合
①Enumeration实现遍历
Enumerationenumeration=v.elements();
while(enumeration.hasMoreElements()){
System.out.println(enumeration.nextElement());
}
2、集合框架之LinkedList
①link.getFirst();//获取第一个但不删除;
②link.removeFirst();//删除第一个并返回;
③遍历方式一
while(!link.isEmpty()){
System.out.println(link.removeFirst());
}
}
3、集合框架之ArrayList
①
4、何时装箱:
基本类型值赋值给引用类型值时用装箱。比如Integerit=5;
5、集合框架之HashSet
①内部数据结构是哈希表,不保证迭代顺序。
②是不同步的。
③为何无序?
因为存储的元素是根据某个算法计算出的哈希值,来进行存储的。存储位置是随机的,所以无序。
④哈希表如何确定元素是否相同。
首先判断两个元素的哈希值是否相同;若相同在判读两个对象的内容是否相同。
判读哈希值是否相同,其实判读的是对象的hashcode();判读内容是否相同,用的是equals();
⑤HashSet存储元素的方法:ha.add(obj);
HashSet集合数据结构是哈希表,所以存储元素的时候,使用的元素的hashCode方法带来的不确定位置,如果位置相同的情况下,在通过元素的equals来确定是否相同。
⑥事例://往HashSet集合中添加Person对象,若姓名和年龄相同视为同一人
//首先添加人
HashSeths=newHashSet();
hs.add(newPerson("lisi4",24));
hs.add(newPerson("lise5",27));
hs.add(newPerson("lisi8",21));
hs.add(newPerson("lise1",29));
hs.add(newPerson("lise1",29));
//其次重写hashcode()和equals()
publicclassPersonextendsObject{
@Override
publicinthashCode(){//位置的确定:默认用的是父类Object的hashCode(),那么对于判断特定的人来说,重写就OK了
returnname.hashCode()+age*22;
}
@Override
publicbooleanequals(Objectobj){//若哈希值位置相同的话,再判断其内容是否相同。
if(this==obj)//判断是否是同一对象,若是的话,没必要在判断内容,肯定相同
returntrue;
if(!(objinstanceofPerson))//判断是否是可以比较的对象,若不是,就不需要再比较内容了,直接异常
thrownewClassCastException("类型错误");
Personp=(Person)obj;
returnthis.name.equals(p.name)&&this.age==p.age;
}
6、集合框架之LinkedHashSet
HashSet使用hashcode()和equals()可以保证不重复,但不能保证有序。使用LinkedHashSet类可以保证有序,即怎么存进去就怎么取出来。
本质是哈希表和链表的结合。
7、集合框架之TreeSet
①无序,即取出和存入的不一致;但是它有指定顺序,是按照元素的字典顺序对Set集合进行排序,是不同步的。
判断元素唯一性的方式:就是根据比较方法的返回结果是否是0,是0就是相同元素,不存。
②特点:元素不重复,但是可以对Set集合中的元素进行排序。
③注意:因为TreeSet在添加元素是必然有比较,是不同于HashSet的,所以要继承Comparable接口,重写compareTo方法。
publicclassPersonimplementsComparable{
@Override
publicintcompareTo(Objecto){
Personp=(Person)o;
if(this.age>p.age)
return1;
if(this.age<p.age)
return-1;
return0;
}
①TreeSet对元素进行排序的方式一:
让元素自身具备比较功能,元素就需要实现Comparable接口,覆盖compareTo方法。
②TreeSet对元素进行排序的方式二:如果不要按照对象中具备的自然顺序进行排序,若果对象中不具备自然顺序。即Person类的compareTo方法不是你写的。
方法是让集合自身具备比较功能:
定义一个类实现comparator接口,覆写期compare方法,然后定义TreeSet类时,将此对象作为构造函数的对象进行传递。
事例:根据Person类的name进行排序比较器。
publicclassCollectionDemoimplementsComparator{
@Override
publicintcompare(Objecto1,Objecto2){
Personp1=newPerson();
Personp2=newPerson();
inttemp=p1.getName().compareTo(p2.getName());
returntemp==0?p1.getAge()-p2.getAge():0;
}
}
7、事例:字符串长度排序
分析:因为String类时Java已经写好的对象,所以不能通过重写compareTo方法来进行比较,那么只能通过实现Comparator接口来定义比较器实现了。
这样在ts.add(str1);ts.add(str2);添加String对象时就可以调用compate方法来实现长度的比较了。
2012/9/11ByMary_
相关文章推荐
- Java基础 集合框架 共性方法 迭代器 ArrayList LinkedList Vector HashSet TreeSet
- 集合框架 Vector LinkedList ArrayList HashSet LinkedHashSet TreeSet
- 黑马程序员_学习笔记:9) 集合框架1:Collection(List、Set)、Iterator、List(ArrayList、LinkedList、Vector)
- Java基础---集合框架---迭代器、ListIterator、Vector中枚举、LinkedList、ArrayList、HashSet、TreeSet、二叉树、Comparator
- Java基础---集合框架---迭代器、ListIterator、Vector中枚举、LinkedList、ArrayList、HashSet、TreeSet、二叉树、Comparator
- 黑马程序员--07.集合框架--04.List实现子类【ArrayList】【LinkedList】【Vector】
- 容器Collection的总结一 Vector ArrayList LinkedList HashSet TreeSet
- 黑马程序员------集合框架(No.2)(ArrayList、LinkedList、vector)
- java中Collection/Collections;List/Set/Map;ArrayList/Vector/LinkedList;HashSet/HashMap/TreeSet/TreeMap
- [javaSE] 集合框架(ArrayList,LinkedList,Vector)
- java基础(集合List-ArrayList、LinkedList、Vector的区别)
- 集合框架——List类(ArrayList、LinkedList、Vector)
- JAVA基础学习之String、StringBuffer、StringBuilder、基本数据类型的使用、整形进制转换、集合Collection、Vector、ArrayList、LinkedList、HashSet、TreeSet等(3)
- 集合框架1(Collection的共性方法,迭代器,ArrayList,LinkedList,Vector)
- 黑马程序员:集合类:List(ArrayList、LinkedList、Vector)、Set(HashSet、TreeSet)介绍
- java集合类,List和Set比较,各自的子类比较(ArrayList,Vector,LinkedList;HashSet,TreeSet),Map集合比较
- (9) java ---- 集合框架图 ArrayList,LinkedList,Vector各自的性能特点及区别
- java基础之集合List-ArrayList、LinkedList、Vector的区别
- Java基础之集合List-ArrayList、LinkedList、Vector的底层实现和区别
- 黑马程序员_集合1_(ArrayList、LinkedList、Vector、Iterator、ListIterator)