java中集合的总结

  

1.特点:存储对象长度可变;存储对象的类型可不同;

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取代了

注:了对于判断是否存在,以及删除等操作,以依赖的方法是元素的hashCodeequals方法

ArrayList判断是否存在和删除操作依赖的是equals方法

(2) Set:无序的,无索引,元素不可重复

HashSet:底层是哈希表,线程不同步,无序、高效

保证元素唯一性:通过元素的hashCodeequals方法。若hashCode值相同,则会判断equals的结果是否为

truehashCode不同,不会调用equals方法

LinkedHashSet:有序,是HashSet的子类

TreeSet:底层是二叉树,可对元素进行排序,默认是自然顺序

保证唯一性:Comparable接口的compareTo方法的返回值

TreeSet两种排序方式:

第一种:自然排序(默认排序):

添加的对象需要实现Comparable接口,覆盖compareTo方法

第二种:比较器

添加的元素自身不具备比较性或不是想要的比较方式。将比较器作为参数传递进去。

定义一个类,实现Comparator接口,覆盖compare方法。当主要条件相同时,比较次要条件。

(3)Map集合

1HashTable:底层数据结构是哈希表,不可存入null键和null值。同步的

Properties继承自HashTable,可保存在流中或从流中加载,是集合和IO流的结合产物

2HashMap:底层数据结构是哈希表;允许使用null键和null值,不同步,效率高

TreeMap

底层数据结构时二叉树,不同步,可排序

Set很像,Set底层就是使用了Map集合

方法:

V put(K key, V value) ;  void putAll(Map m)

void clear();  V remove(Object key)

boolean containsKey(Object key);  containsValue(Object key);  isEmpty()

V get(Object key); int size(); Collection<V> values()

Set<K> keySet();  Set<Map.Entry<K,V>> entrySet()

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();

//……

}

CollectionMap的区别:

Collection:单列集合,一次存一个元素

Map:双列集合,一次存一对集合,两个元素(对象)存在着映射关系


集合工具类:

Collections:操作集合(一般是list集合)的工具类。方法全为静态的

sort(List list);list集合进行排序; sort(List list, Comparator c) 按指定比较器排序

fill(List list, T obj);将集合元素替换为指定对象;

swap(List list, int I, int j)交换集合指定位置的元素

shuffle(List list); 随机对集合元素排序

reverseOrder() :返回比较器,强行逆转实现Comparable接口的对象自然顺序

reverseOrder(Comparator c):返回比较器,强行逆转指定比较器的顺序


CollectionCollections的区别:

Collectionsjava.util下的工具类,实现对集合的查找、排序、替换、线程安全化等操作。

Collection:是java.util下的接口,是各种单列集合的父接口,实现此接口的有ListSet集合,存储对象并对其进行操作。


Arrays

用于操作数组对象的工具类,全为静态方法

asList():将数组转为list集合

好处:可通过list集合的方法操作数组中的元素:

isEmpty()contains()indexOf()set()

弊端:数组长度固定,不可使用集合的增删操作。

如果数组中存储的是基本数据类型,asList会将数组整体作为一个元素存入集合

集合转为数组:Collection.toArray()

好处:限定了对集合中的元素进行增删操作,只需获取元素






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值