JAVA 集合
2016-03-11 10:19
381 查看
集合
1、特点:存储对象;长度可变;存储对象的类型可不同;
2、集合框架:
![](http://img.blog.csdn.net/20160311102126788?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
2)Collection
(1)List:有序的;元素可重复,有索引
(add(index, element)、add(index, Collection)、remove(index)、set(index,element)、get(index)、subList(from,
to)、listIterator())
①ArrayList:底层是数组结构,查询快,增删慢,不同步。
②LinkedList:底层是链表结构,增删快,查询慢,不同步
addFist();addLast() getFirst();getLast()
removeFirst();removeLast() 获取并删除元素,无元素将抛异常:NoSuchElementException
替代的方法(JDK1.6):
offerFirst();offerLast();
peekFirst();peekLast();无元素返回null
pollFirst();pollLast();删除并返回此元素,无元素返回null
③Vector:底层是数组结构,线程同步,被ArrayList取代了
注:了对于判断是否存在,以及删除等操作,以依赖的方法是元素的hashCode和equals方法
ArrayList判断是否存在和删除操作依赖的是equals方法
(2)Set:无序的,无索引,元素不可重复
①HashSet:底层是哈希表,线程不同步,无序、高效
保证元素唯一性:通过元素的hashCode和equals方法。若hashCode值相同,则会判断equals的结果是否为true;hashCode不同,不会调用equals方法
LinkedHashSet:有序,是HashSet的子类
②TreeSet:底层是二叉树,可对元素进行排序,默认是自然顺序
保证唯一性:Comparable接口的compareTo方法的返回值
===》TreeSet两种排序方式:两种方式都存在时,以比较器为主
第一种:自然排序(默认排序):
添加的对象需要实现Comparable接口,覆盖compareTo方法
第二种:比较器
添加的元素自身不具备比较性或不是想要的比较方式。将比较器作为参数传递进去。
定义一个类,实现Comparator接口,覆盖compare方法。当主要条件相同时,比较次要条件。
3)Map集合:
(1)HashTable:底层数据结构是哈希表,不可存入null键和null值。同步的
Properties继承自HashTable,可保存在流中或从流中加载,是集合和IO流的结合产物
(2)HashMap:底层数据结构是哈希表;允许使用null键和null值,不同步,效率高
TreeMap:
底层数据结构时二叉树,不同步,可排序
与Set很像,Set底层就是使用了Map集合
方法:
Vput(K key, V value) ; void putAll(Map m)
voidclear(); V remove(Object key)
booleancontainsKey(Object key); containsValue(Object key); isEmpty()
Vget(Object key); int size(); Collection<V> values()
Set<K>keySet(); Set<Map.Entry<K,V>> entrySet()
2.3、Map集合两种取出方式:
第一种:Set<K> keySet()
取出Map集合中的所有键放于Set集合中,然后再通过键取出对应的值
Set<String>keySet = map.keySet();
Iterator<String>it = keySet.iterator();
while(it.hasNext()){
String key = it.next();
String value = map.get(key);
//…..
}
第二种:Set<Map.Entry<K,V>>entrySet()
取出Map集合中键值对的映射放于Set集合中,然后通过Map集合中的内部接口,然后通过其中的方法取出
Set<Map.Entry<String,String>>entrySet = map.entrySet();
Iterator<Map.Entry<String,String>>it = entrySet.iterator();
While(it.hasNext()){
Map.Entry<String,String> entry =it.next();
String key = entry.getKey();
String value = entry.getValue();
//……
}
2.4、Collection和Map的区别:
Collection:单列集合,一次存一个元素
Map:双列集合,一次存一对集合,两个元素(对象)存在着映射关系
2.5、集合工具类:
Collections:操作集合(一般是list集合)的工具类。方法全为静态的
sort(Listlist);对list集合进行排序; sort(List list,Comparator c)
按指定比较器排序
fill(Listlist, T obj);将集合元素替换为指定对象;
swap(Listlist, int I, int j)交换集合指定位置的元素
shuffle(Listlist); 随机对集合元素排序
reverseOrder():返回比较器,强行逆转实现Comparable接口的对象自然顺序
reverseOrder(Comparatorc):返回比较器,强行逆转指定比较器的顺序
2.6、Collection和Collections的区别:
Collections:java.util下的工具类,实现对集合的查找、排序、替换、线程安全化等操作。
Collection:是java.util下的接口,是各种单列集合的父接口,实现此接口的有List和Set集合,存储对象并对其进行操作。
3、Arrays:
用于操作数组对象的工具类,全为静态方法
asList():将数组转为list集合
好处:可通过list集合的方法操作数组中的元素:
isEmpty()、contains()、indexOf()、set()
弊端:数组长度固定,不可使用集合的增删操作。
如果数组中存储的是基本数据类型,asList会将数组整体作为一个元素存入集合
集合转为数组:Collection.toArray();
好处:限定了对集合中的元素进行增删操作,只需获取元素
1、特点:存储对象;长度可变;存储对象的类型可不同;
2、集合框架:
2)Collection
(1)List:有序的;元素可重复,有索引
(add(index, element)、add(index, Collection)、remove(index)、set(index,element)、get(index)、subList(from,
to)、listIterator())
①ArrayList:底层是数组结构,查询快,增删慢,不同步。
②LinkedList:底层是链表结构,增删快,查询慢,不同步
addFist();addLast() getFirst();getLast()
removeFirst();removeLast() 获取并删除元素,无元素将抛异常:NoSuchElementException
替代的方法(JDK1.6):
offerFirst();offerLast();
peekFirst();peekLast();无元素返回null
pollFirst();pollLast();删除并返回此元素,无元素返回null
③Vector:底层是数组结构,线程同步,被ArrayList取代了
注:了对于判断是否存在,以及删除等操作,以依赖的方法是元素的hashCode和equals方法
ArrayList判断是否存在和删除操作依赖的是equals方法
(2)Set:无序的,无索引,元素不可重复
①HashSet:底层是哈希表,线程不同步,无序、高效
保证元素唯一性:通过元素的hashCode和equals方法。若hashCode值相同,则会判断equals的结果是否为true;hashCode不同,不会调用equals方法
LinkedHashSet:有序,是HashSet的子类
②TreeSet:底层是二叉树,可对元素进行排序,默认是自然顺序
保证唯一性:Comparable接口的compareTo方法的返回值
===》TreeSet两种排序方式:两种方式都存在时,以比较器为主
第一种:自然排序(默认排序):
添加的对象需要实现Comparable接口,覆盖compareTo方法
第二种:比较器
添加的元素自身不具备比较性或不是想要的比较方式。将比较器作为参数传递进去。
定义一个类,实现Comparator接口,覆盖compare方法。当主要条件相同时,比较次要条件。
3)Map集合:
(1)HashTable:底层数据结构是哈希表,不可存入null键和null值。同步的
Properties继承自HashTable,可保存在流中或从流中加载,是集合和IO流的结合产物
(2)HashMap:底层数据结构是哈希表;允许使用null键和null值,不同步,效率高
TreeMap:
底层数据结构时二叉树,不同步,可排序
与Set很像,Set底层就是使用了Map集合
方法:
Vput(K key, V value) ; void putAll(Map m)
voidclear(); V remove(Object key)
booleancontainsKey(Object key); containsValue(Object key); isEmpty()
Vget(Object key); int size(); Collection<V> values()
Set<K>keySet(); Set<Map.Entry<K,V>> entrySet()
2.3、Map集合两种取出方式:
第一种:Set<K> keySet()
取出Map集合中的所有键放于Set集合中,然后再通过键取出对应的值
Set<String>keySet = map.keySet();
Iterator<String>it = keySet.iterator();
while(it.hasNext()){
String key = it.next();
String value = map.get(key);
//…..
}
第二种:Set<Map.Entry<K,V>>entrySet()
取出Map集合中键值对的映射放于Set集合中,然后通过Map集合中的内部接口,然后通过其中的方法取出
Set<Map.Entry<String,String>>entrySet = map.entrySet();
Iterator<Map.Entry<String,String>>it = entrySet.iterator();
While(it.hasNext()){
Map.Entry<String,String> entry =it.next();
String key = entry.getKey();
String value = entry.getValue();
//……
}
2.4、Collection和Map的区别:
Collection:单列集合,一次存一个元素
Map:双列集合,一次存一对集合,两个元素(对象)存在着映射关系
2.5、集合工具类:
Collections:操作集合(一般是list集合)的工具类。方法全为静态的
sort(Listlist);对list集合进行排序; sort(List list,Comparator c)
按指定比较器排序
fill(Listlist, T obj);将集合元素替换为指定对象;
swap(Listlist, int I, int j)交换集合指定位置的元素
shuffle(Listlist); 随机对集合元素排序
reverseOrder():返回比较器,强行逆转实现Comparable接口的对象自然顺序
reverseOrder(Comparatorc):返回比较器,强行逆转指定比较器的顺序
2.6、Collection和Collections的区别:
Collections:java.util下的工具类,实现对集合的查找、排序、替换、线程安全化等操作。
Collection:是java.util下的接口,是各种单列集合的父接口,实现此接口的有List和Set集合,存储对象并对其进行操作。
3、Arrays:
用于操作数组对象的工具类,全为静态方法
asList():将数组转为list集合
好处:可通过list集合的方法操作数组中的元素:
isEmpty()、contains()、indexOf()、set()
弊端:数组长度固定,不可使用集合的增删操作。
如果数组中存储的是基本数据类型,asList会将数组整体作为一个元素存入集合
集合转为数组:Collection.toArray();
好处:限定了对集合中的元素进行增删操作,只需获取元素
相关文章推荐
- Java 删除项目中的.svn信息
- JAVA内存溢出(java.lang.OutOfMemoryError)的常见情况和处理方式总结
- Java基础--线程池的应用
- Ubuntu安装浏览器Java扩展
- 做一个合格的程序猿之浅析Spring IoC源码(六)BeanFactoryPostProcessor
- java进度条代码
- java操作xml文件
- 将java的Date转换成Solr的时间格式
- List判断非空
- Java编程初体验:列主元素高斯消去法
- 秒杀系统设计详解
- 深入浅出之Spring第一章Spring介绍
- java 反射机制
- java中怎样表示一个无穷大? 无穷小?
- maven安装以及eclipse配置maven
- java 读取属性文件 properties
- Java EE 运用DBHelper查询数据库表中的所有内容
- JAVA深入研究——Method的Invoke方法。
- java基础之extends与implement
- static、final、transient [ Java ]