Thinking in java个人笔记4

Thinking in java 个人笔记4

Ø  范性:如ArrayList<Apple> a=new ArrayList<Apple>();List类型有size(),add(),get()

Ø  java容器类:常用集合类的继承关系

Collection<--List<--Vector 
Collection<--List<--ArrayList 
Collection<--List<--LinkedList 
Collection<--Set<--HashSet 
Collection<--Set<--HashSet<--LinkedHashSet 
Collection<--Set<--SortedSet<--TreeSet 
Map<--SortedMap<--TreeMap 
Map<--HashMap <--LinkedHashMap

一、 几个常用的区 
1.ArrayList:元素单个,效率高,多用于查询 
2.Vector:元素单个,线程安全,多用于查询 
3.LinkedList:元素单个,多用于插入和删除 
4.HashMap:元素成对,元素可为空 
5.HashTable:元素成对,线程安全,元素不可为空 

6.Array是基于索引(index)的数据结构,List是一个有序的集合继承于conllection

 

LinkedList每一个节点(node)包含如下信息1,节点本身的数据(data)2,下一个节点的信息(nextNode)

TreeMap:firstKey(),lastKey(),put(key,value),get(key)

Collections类的静态方法:binarySearch(折半查找),sort(排序),reverse(逆序操作),swap(交换)

Arrays类的静态方法:fill(给数组赋值),sort(生序排序),equals(比较数组中的元素是否相等),binarySearch(折半查找)

ü  collection是一个集合接口,collections是包装含有多个静方法不能例化

ü  添加一组元素:Collection<Integer> con=newArrayList<Integer>(Arrays.asList(1,2,3,4,5));//把一个数组转换为list,对象类型

Integer[]a={1,2,3,4,5};

con.addAll(Arrays.asList(a));

ü  Arrays.toString(a)//输出数组;list.toString()//List类型输出

ü  Map:HashMap拥有最快的查找技术,TreeMap按照比较结果生序保存键,LinkedHashMap按插入顺序保存键同时还拥有HashMap的查询速度

ü  List:ArrayList(优于随机访问),LinkedList(优于插入删除)

List的一些方法:add(),remove(下标),contains();addAll(Conllection),indexOf()->取出下标,subList(a,b)->截取a<=?<b,set(index,value)->替换,clear()->清空,isEmpty(),

ü  迭代器:不重写代码就可以应用于不同容器;Iterator:有next(),hashNext(),remove()方法

ü  ListIterator是一个更加强大的Iterator的子类型,可以双向移动;具有前后索引,hashNext()和hasPrevious(),pets.ListIterator(3)来创建一个一开始就指向列表索引为n的迭代,set()方法来替换

ü  LinkedList:和ArrayList一样实现了List接口,getFirst()==element()->获取第一个数,如果为空则抛出异常peek()获取第一个数,空则不抛出异常;removeFirst(),remove()一样,删除并返回列表第一个数,若空则抛出异常,poll()不抛出异常;addFirst(),add()效果一样,插入第一个位置;addLast()插入尾部;removeLast()删除并返回最后一个数;

ü  LinkedList可以实现Stack/Queue的全部功能:push->pop->peek()->empty()->toString()

ü  Set:不保存重复的元素;HashSet专门针对查找->使用散列;TreeSet将元素存储在红黑树中并实现排序;LinkedHashMap也是使用散列进行存放;Collections.addAll(set1,”a,b,c,d”.split(“,”))生成set;set1.contains(“a”)来验证归属性,set1.containsAll(set2)是否与集合相匹配;按照字母排序Set<String>set=new TreeSet<String>(String.CASE_INSENSITIVE_ORDER)

ü  Map:map.put(r,freg==nll?1:freg+1)可以在里面用表达式,get();HashMap可以使用Integer的引用(不能使用基本类型的容器);containsKey(),containsValue()来验证归属性;也可以扩展到多维:Map->Map<Person,List<Pet>>;

ü  PriorityQueue:优先级队列可以确保调用peek(),poll(),remove()方法时获取的元素将是队列中优先级最高的;

ü  Collection是描述所有有序列容器的共性的根接口;用迭代器而不是collection来表示容器之间的共性;实现了collection就意味着需要提供interator接口;

ü  Foreach可以应用于任何Collection对象,map.entrySet()将产生一个Map.Entry类型的set且此set是Interable类型的;

ü  数组和List都是排好序的容器,List可以自动扩容;

ü  需要大量随机访问就使用ArrayList,要进行频繁插入,删除操作就用LinkedList;

ü  Set不接受重复元素,HashSet提供最快的查询速度,TreeSet始终保持排序,LinkedHashSet以插入顺序保持元素;

ü  新程序中不应该使用过时的vector,HashTable,Stack;

ü  异常:定义新异常继承Exception->getMessage();

ü  栈轨迹:printStackTrace()方法所提供的信息可以通过getStackTrace()方法来直接访问;static f()->catch(Exception e){for(StackTraceElemetst:e.getStackTrace)->st.getMethodName()};

在其他函数或者主函数调用,返回函数调用的顺序

ü  重新抛出异常:catch{…throw e;};重新抛出异常会把异常抛给上一级的处理程序,其他catch会被忽略;如果只是把当前异常对象重新抛出,那么printStackTrace()方法显示的将是原来异常的抛出点调用栈信息,而非重新抛出点的信息,调用fillStackTrace()就可以成为异常的新发生地;

ü  Throwable这个java类被用来表示任何可以作为异常被抛出的类;

ü  Finally:主要用来清除打开的文件或者网络资源,在屏幕上画的图形,或者是外部的开关

ü  异常匹配:在抛出异常的时候,异常处理系统会按照代码的书写顺序来找出“最近”的处理程序,找到匹配的处理程序后,就认为异常将得到处理,然后不再继续查找;派生类可以匹配基类的处理程序catch(Animal e){..}catch(Cat e)


猜你喜欢

转载自blog.csdn.net/Alpha_Paser/article/details/75000018