Collection下的容器
1.Set
HashSet是最普通的set,仅能用来存储不同的数据
LinkedHashSet主要用来FIFO
TreeSet主要用来排序,所以不允许null(基本上等价于stl的set了,底层也是红黑树)
TreeSet的两种排序方法:
1.自然排序,让TreeSet<A>的A类去实现Comparable接口内的int CompareTo(A a)方法
返回值0:元素相同,去重
返回值1:顺序
返回值-1:逆序
2.比较器排序,单独创建一个比较类MyComparator,继承Comparator<T>泛型接口,重写int compare(T t1,T t2) 方法
在创建TreeSet时把这个比较器丢到构造函数里去,TreeSet<T> ts = new TreeSet<T>( new MyComparator() );
返回值处理同上
具体例子看这个
https://blog.csdn.net/zhangqunshuai/article/details/80660974
2.List
ArrayList:快速随机访问,地址连续
LinkedList:对顺序访问进行了优化,向List中间插入与删除的开销并不大,地址不连续,所以在开辟内存空间的时候不需要等一个连续的地址
还具有下列方 法:addFirst(), addLast(), getFirst(), getLast(), removeFirst() 和 removeLast(),
这些方法 (没有在任何接口或基类中定义过)使得LinkedList可以当作堆栈、队列和双向队列使用。
Vector: 同步,线程安全的List,太老了一般不用?
关于Collection接口下的通用方法
boolean add(Object o) :向集合中加入一个对象的引用 void clear():删除集合中所有的对象,即不再持有这些对象的引用 boolean isEmpty() :判断集合是否为空 boolean contains(Object o) : 判断集合中是否持有特定对象的引用 Iterartor iterator() :返回一个Iterator对象,可以用来遍历集合中的元素 boolean remove(Object o) :从集合中删除一个对象的引用 int size() :返回集合中元素的数目 Object[] toArray() : 返回一个数组,该数组中包括集合中的所有元素
Map下的容器
3.map
HashMap:最普通的map,使用hashCode()进行key->value快速查询,基于hash表实现,
判不同时要同时重写equals方法和hashCode方法
此外有keySet()方法返回键值集合
entrySet()方法返回键值对集合
Entry<K,V>为一个键值对,getKey方法得到键值,getValue方法得到值
此外,自定义类要实现在map里判断不同,必须重载equals和hasCode方法,因为map是通过key对象得到hashcode,equals用来判key是否相等,在这基础上还要再判一次hashcode
map用法 https://blog.csdn.net/qq_29373285/article/details/81487594
底层原理 https://blog.csdn.net/woshimaxiao1/article/details/83661464
LinkedHashMap:使用 链表维护
TreeMap:内部元素按key以某种规则有序,排序规则参照TreeSet的排序方式(所以底层也是红黑树)
TreeMap:https://www.jianshu.com/p/e11fe1760a3d
array:代表最普通的数组
Java中有一个Arrays类,专门用来操作array。
arrays中拥有一组static函数,
equals():比较两个array是否相等。array拥有相同元素个数,且所有对应元素两两相等。
fill():将值填入array中。
sort():用来对array进行排序。
binarySearch():在排好序的array中寻找元素。
System.arraycopy():array的复制。