集合详解

集合:

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

Collection

List:有序的;元素可重复,有索引

(add(index, element)、add(index, Collection)、remove(index)、 set(index,element)、get(index)、subList(from, to)、listIterator())

  1. ArrayList:底层是数组结构,查询快,增删慢,不同步。
  2. LinkedList:底层是链表结构,增删快,查询慢,不同步
    addFist();addLast() getFirst();getLast()
    removeFirst();removeLast() 获取并删除元素,无元素将抛异常:NoSuchElementException
    替代的方法(JDK1.6):
    offerFirst();offerLast();
    peekFirst();peekLast();无元素返回null
    pollFirst();pollLast();删除并返回此元素,无元素返回null
  3. Vector:底层是数组结构,线程同步,被ArrayList取代了
    注:了对于判断是否存在,以及删除等操作,以依赖的方法是元素的hashCode和equals方法
    ArrayList判断是否存在和删除操作依赖的是equals方法

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

  1. HashSet:底层是哈希表,线程不同步,无序、高效
    保证元素唯一性:通过元素的hashCode和equals方法。若hashCode值相同,则会判断equals的结果是否为true;hashCode不同,不会调用equals方法
    LinkedHashSet:有序,是HashSet的子类
  2. TreeSet:底层是二叉树,可对元素进行排序,默认是自然顺序
    1. 保证唯一性:Comparable接口的compareTo方法的返回值
    2. TreeSet两种排序方式:两种方式都存在时,以比较器为主
      第一种:自然排序(默认排序):
      添加的对象需要实现Comparable接口,覆盖compareTo方法
      第二种:比较器
      添加的元素自身不具备比较性或不是想要的比较方式。将比较器作为参数传递进去。
      定义一个类,实现Comparator接口,覆盖compare方法。当主要条件相同时,比较次要条件。

Map集合:

  1. HashTable:底层数据结构是哈希表,不可存入null键和null值。同步的
    Properties继承自HashTable,可保存在流中或从流中加载,是集合和IO流的结合产物
  2. HashMap:底层数据结构是哈希表;允许使用null键和null值,不同步,效率高
  3. TreeMap:
    底层数据结构时二叉树,不同步,可排序
    与Set很像,Set底层就是使用了Map集合
    方法:
    V put(K key, V value) ;
    void putAll(Map m)
    V remove(Object key)
    containsValue(Object key);isEmpty()
    V get(Object key); int size();
    Collection values()
    Set keySet();
    Set
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:双列集合,一次存一对集合,两个元素(对象)存在着映射关系
集合工具类:
  1. Collections:操作集合(一般是list集合)的工具类。方法全为静态的
  2. sort(List list);对list集合进行排序; sort(List list, Comparator c) 按指定比较器排序
  3. fill(List list, T obj);将集合元素替换为指定对象;
  4. swap(List list, int I, int j)交换集合指定位置的元素
  5. shuffle(List list); 随机对集合元素排序
  6. reverseOrder() :返回比较器,强行逆转实现Comparable接口的对象自然顺序
  7. reverseOrder(Comparator c):返回比较器,强行逆转指定比较器的顺序
Collection和Collections的区别:
  1. Collections:java.util下的工具类,实现对集合的查找、排序、替换、线程安全化等操作。
  2. Collection:是java.util下的接口,是各种单列集合的父接口,实现此接口的有List和Set集合,存储对象并对其进行操作。

Arrays:

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

  1. asList():将数组转为list集合
    好处:可通过list集合的方法操作数组中的元素:
  2. isEmpty()、contains()、indexOf()、set()

数组的好于弊

a. 弊端:数组长度固定,不可使用集合的增删操作。
如果数组中存储的是基本数据类型,asList会将数组整体作为一个元素存入集合
集合转为数组:Collection.toArray();
b.好处:限定了对集合中的元素进行增删操作,只需获取元素

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python集合是一种无序且不重复的数据结构。它们类似于列表和元组,但是不允许有重复项。集合可以用于去重、交集、并集和差集等操作。下面是Python集合的详细介绍。 1. 创建集合 可以使用大括号{}或set()函数来创建一个空集合,也可以在大括号中直接输入元素来创建集合。例如: ```python # 创建空集合 set1 = set() print(set1) # set() # 创建有元素的集合 set2 = {1, 2, 3} print(set2) # {1, 2, 3} set3 = set([4, 5, 6]) print(set3) # {4, 5, 6} ``` 2. 集合操作 可以使用以下操作符和方法来操作Python集合: - 添加元素:add()方法、update()方法 - 删除元素:remove()方法、discard()方法、pop()方法 - 清空集合:clear()方法 - 特殊操作:交集&、并集|、差集-、对称差集^ 例如: ```python # 添加元素 set1.add(1) print(set1) # {1} set1.update([2, 3]) print(set1) # {1, 2, 3} # 删除元素 set1.remove(2) print(set1) # {1, 3} set1.discard(4) # 如果元素不存在,不会报错 print(set1) # {1, 3} set1.pop() # 随机删除一个元素 print(set1) # {3} # 清空集合 set1.clear() print(set1) # set() # 特殊操作 set2 = {1, 2, 3} set3 = {3, 4, 5} print(set2 & set3) # {3},交集 print(set2 | set3) # {1, 2, 3, 4, 5},并集 print(set2 - set3) # {1, 2},差集 print(set2 ^ set3) # {1, 2, 4, 5},对称差集 ``` 3. 集合方法 Python集合还有一些常用的方法,例如: - len()方法:返回集合中元素的个数 - in关键字:判断元素是否在集合中 - issubset()方法:判断一个集合是否是另一个集合的子集 - issuperset()方法:判断一个集合是否是另一个集合的超集 - union()方法:返回两个集合的并集 - intersection()方法:返回两个集合的交集 - difference()方法:返回两个集合的差集 - symmetric_difference()方法:返回两个集合的对称差集 例如: ```python set1 = {1, 2, 3} set2 = {3, 4, 5} print(len(set1)) # 3 print(2 in set1) # True print(4 in set1) # False print(set1.issubset(set2)) # False print(set2.issuperset(set1)) # False print(set1.union(set2)) # {1, 2, 3, 4, 5} print(set1.intersection(set2)) # {3} print(set1.difference(set2)) # {1, 2} print(set1.symmetric_difference(set2)) # {1, 2, 4, 5} ``` 总之,Python集合是一种非常实用的数据结构,可以用于去重、交集、并集和差集等操作。掌握集合的使用方法可以帮助你更加高效地处理数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值