1. JAVA的集合类型继承自Collection类
调用关系:ArrayList<T> -> AbstractList<T>->List<T>->Collection<T>->Iterable<T>
public interface Collection<T> extends Iterator<T>
{
int size();
boolean isEmpty();
boolean contains(Object o);
Iterator<E> iterator();
Object[] toArray();
<T> T[] toArray(T[] a);
boolean add(E e);
boolean remove(Object o);
boolean containsAll(Collection<?> c);
boolean addAll(Collection<? extends E> c);
boolean removeAll(Collection<?> c);
boolean retainAll(Collection<?> c);
void clear();
boolean equals(Object o);
int hashCode();
}
2. ArrayList与LinkedList
操作是完全一致的,但是ArrayList与LinkedList的内部实现不同
ArrayList对于随机读的效率很高,对于插入操作需要移动其后的内容
LinkedList的读取每次从开头位置的指针依次往后读,对于插入操作只需要插入指针就可以.
3. Vector与ArrayList的区别
Vector是线程同步的方法,安全
注:addElement(Object)与add(Object)方法类似,add(Object)返回true.
4. Set类
Set类有TreeSet与HashSet两种实现.
在于TreeSet源自TreeMap的实现,HashSet来自HashMap的实现,TreeMap是排序输出,hashMap是随机输出,hashMap的操作速度较快
注1:BitSet不是Set接口的实现
注2:Set中的元素不能修改成一样的元素,但是我也不知道怎么改成一致。。
5. Map类
Map类有TreeMap与HashMap两种实现
利用Map实现String转int的操作
public static int String2IntByMap(String input)
{
Map<Character, Integer> m = new HashMap();
m.put('0',0);
m.put('1',1);
m.put('2',2);
m.put('3',3);
m.put('4',4);
m.put('5',5);
m.put('6',6);
m.put('7',7);
m.put('8',8);
m.put('9',9);
char[] inputArray = input.toCharArray();
int sum = 0;
for(int i= 0; i< inputArray.length;i++)
{
sum = 10*sum + m.get(inputArray[i]);
}
return sum;
}
注1: Map就是C#中的Dictionary
利用Iterator遍历时,TreeMap有序,HashMap无序.
注2:JAVA中的集合类的模板类必须使用引用类型不能使用原始类型
char Character
int Integer
short Short
byte Byte
boolean Boolean
long Long
double Double
float Float
另外学习到一个BigDecimal来覆盖16位精度的数据.