关于集合

来源:互联网 发布:linux 自动启动svn 编辑:程序博客网 时间:2024/06/14 23:02


一、特点:

存储对象;

长度可变;

存储对象的类型可不同;

、集合框架

     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方法。当主要条件相同时,比较次要条件。


Map集合:

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

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

②HashMap:底层数据结构是哈希表;允许使用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();//……}

Collection和Map的区别:

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

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


集合工具类:

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

sort(List list):对list集合进行排序; 

sort(List list, Comparator c) :按指定比较器排序

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

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

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

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

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


Collection和Collections的区别:

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

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


Arrays:

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

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

好处:可通过list集合的方法操作数组中的元素:isEmpty()contains()indexOf()set()

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

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

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

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






原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 玩手机麻将老输怎么办 打四川麻将老输怎么办 网上打麻将老输怎么办 手机打麻将老输怎么办 近来打麻将老输怎么办 最近手气不好老输钱怎么办 头被风吹了头痛怎么办 打麻将老输怎么办转运 外出时家里的花怎么办 放假了家里的花怎么办 老是怀疑老婆有外遇怎么办 老婆出轨我该怎么办呢 老公爱爱时间短怎么办 老婆离家出走了怎么办离婚呢 4g网络变成h了怎么办 打麻药伤到神经怎么办 40多岁乳房下垂怎么办 手冻了怎么办 小妙招 脸过敏好了还红怎么办 脸过过敏红肿痒怎么办 腰间盘突出压迫神经腿麻怎么办 腰椎盘突出脚麻怎么办 水泡破了化脓了怎么办 泰迪口臭很严重怎么办 狗狗的嘴巴好臭怎么办 2岁宝宝有口臭怎么办 2岁半宝宝口臭怎么办 胃热引起的口臭怎么办 脑梗右手不能动怎么办 脑梗右手不灵活怎么办 冒冷汗头晕想吐怎么办 脸中风嘴歪了怎么办 耳朵里疱疹破了怎么办 吃了变质的米饭怎么办 吃了变质的蛋糕怎么办 吃了变质的饭怎么办 颈椎病犯了头晕恶心怎么办 感冒引起的耳朵疼怎么办 感冒了左耳朵疼怎么办 受风引起的面瘫怎么办 两边的脸不一样大怎么办