JAVA中的集合
JAVA集合
Java的集合类主要由两个接口派生:Collection和Map,二者各自有多个实现类。
Collection接口是List、Set、Queue接口的父接口,该接口的方法适用于它的子接口。
Collection的接口:
void clear() : 清除集合中的所有元素,将集合的长度变为0。
boolean contains(Object o) :查找集合中是否包含指定元素。
boolean containsAll(Collection c) :判断集合中是否包含集合c中所有的元素。
boolean isEmpty() :判断集合是否为空。
Iterator iterator() :返回一个Iterator对象,用于遍历集合中的元素。
boolean remove(Object o) :删除指定元素,若多个只删除第一个。如果删除返回true。
boolean removeAll(Collection c) :删除集合c中所有的元素。如果删除返回true。
boolean retainAll(Collection c) :从集合中删除集合c中不包含的元素,相当于两个集合的交集。如果集合被改变返回true。
int size() :返回集合的元素个数。
Object[] toArray() :把集合转换成一个数组,所有的集合元素变成对应的数组元素。
List下的ArrayList和Vector:
格式: List<String> list1 = null;
list1 = new ArrayList<String>();或 list1 = new Vector<String>();
二者的使用方法并不存在大的区别,只是一个快(非线程安全)一个慢(线程安全).
ArrayList 是一个对象,功能相当于一个灵活的数组,可以随意的删除,增加元素,
例如 4,5,6
把5删除之后就变成了 4,6
向list中加入对象参数:add()
在索引参数中移除对象:remove()
移除该对象:remove()
如果和对象参数匹配返回“true”:contains()
如果list中没有元素返回"true":isEmpty()
返回对象参数的索引或-1:indexOf()
返回list中元素的个数:size()
返回当前索引参数的对象:get()
Set:一个不能存放重复元素的集合,但是可以排序
分为: 散列存放:HashSet
有序存放:TreeSet 自动排序
格式: Set<String> set1 = null;
set1 = new TreeSet<String>();
或 set1 = new HashSet<String>():
iterator :迭代器
可以用于ArrayList、set、map。
iterator<String> iter = set1.iterator();
while(iter.hasNext()) {
System.out.println(iter.next());
}
Map接口的方法:
void clear() :删除Map中所有key-value对。
boolean containsKey(Object key) :查询Map中是否包含指定的key。
boolean containsValue(Object value) :查询Map中是否包含一个或多个value。
Set entrySet() :返回Map中包含的key-value对组成的Set集合。
Object get(Object key) :返回指定key对应的value;如果此Map中不包含该key,则返回null。
boolean isEmpty() :判断Map是否为空。
Set keySet() :返回该Map中所有key组成的Set集合。
Object put(Object key,Object value) :
添加一个key-value对,如果当前Map中已有一个与该key相等的
key-value对,则新的key-value对会覆盖原来的key-value对。
void putAll(Map m) :将指定Map中的key-value对复制到本Map中。
Object remove(Object key) :
删除指定key所对应的key-value对,返回被删除key所关联的value,如果该
key不存在,则返回null。
boolean remove(Object key,Object value) :删除指定key、value对应的key-value对。
int size() :返回Map中的key-value对的个数。
Collection values() :返回该Map中所有value组成的Collection.
Map:与python中的字典类似
一个key,一个value
HashMap和Hashtable都是Map接口的典型实现类。
区别:
Hashtable是一个线程安全的Map实现,但HashMap是线程不安全的实现,所以HashMap比Hashtable的性能高一点,但如果有多个线程访问同一个Map对象时,使用Hashtable实现类会更好。
Hashtable不允许使用null作为key和value,如果试图把null值放进Hashtable中,将会引发NullPointerException异常,但HashMap可以使用null作为key或value。
格式: map<String,String> m = new HashMap<String,String>();
方法:
m.put(key,value); 添加元素
m.keySet(); 获得map中的所有key
m.containsKey(a); 查找map中的key是否含有元素a