关于Collection'

---恢复内容开始---

众所周知在我们使用Java中的类的存储的时候经常会使用一些容器,链表的概念,本文将彻底帮您弄清链表的各种概念和模型!!!!注

意理解哦~~~ 大致框架如下:                                                                        

 

 

 

                                                                                        ---->ArrayList  类似数组的形式进行存储,因此它的随机访问速度快  可以重复)

                                                                                       | 

                                                                                       |

                                                                                       |

                                    ----->List--------------------------->|                        

                                   |                                                   |                                 

                                   |                                                   |----->LinkedList 适合于在链表中间需要频繁进行插入和删除操作。

                                   |                              

                                   |                        

                                   |

Collection------------>   |

(元素间无序,               |

可以重复组各 自独立的元素|         

 即其内的每个位 置仅持有  |                                                    |   ---->HashSet 能快速定位,但是放到HashSet中的对象需要实现hashCode方法

一个 元素)                    |                                                    |

                                   |                                                    |

                                   |                                                    |

                                           ----->Set----------------------->|                            

                                          (实现了不重复,有点象集合的        |            

                                                  概念,无序)                     |

                                                                                        |

                                                                                        |                                                   

                                                                                         ---->TreeSet  实现了相应的排序

 

Map:与Collection并列 群成对的key-value对象,即所持有的是key-value pairs。Map中不能有重复的key,它拥有自己的内部排列机制

。但可以实现多个键值对应一个数值的情况。

Iterator:Iterator又称迭带器,能对Collection进行顺序遍历。

Vector:Vector是List接口的一个具体实现,支持列表元素的顺序访问,大小可以随着元素的增加二而增加,同时是线程安全的。也正为

要求线程安全,所以访问的性能比较差。自Java1.2以后,已经不推荐使用。Java1.2推荐使用ArrayList和LinkedList。他们都不是线程安

全的,所以性能较好。其中ArrayList随机访问速度快,而LinkedList在表中间 插入的速度快。

对于以上两种类型,说白了就是Collection类的容器,实现其具体的遍历而实现的。

 

Collection,Set,List的区别:       Collection各元素之间没有指定的顺序,允许有重复的元素和多个null元素对象.       Set各元素之间没有指定的顺序,不允许有重复的元素,最多允许有一个null元素对象.       List各元素之间有指定的顺序,允许有重复的元素和多个null元素对象.

List接口对Collection进行了简单的扩充,它的具体实现类常用的有ArrayList和LinkedList。 你可以将任何东西放到一个List容器中,并在需要时从中取出。 ArrayList从其命名中可以看出它是一种类似数组的形式进行存储,因此它的随机访问速度极快,而LinkedList的内部实现是链表,它适合

于在链表中间需要频繁进行插入和删除操作。 在具体应用时可以根据需要自由选择。前面说的Iterator只能对容器进行向前遍历,而ListIterator则继承了Iterator的思想,并提供了对

List进行双向遍历的方法。

Set接口也是Collection的一种扩展,而与List不同的时,在Set中的对象元素不能重复,也就是说你不能把同样的东西两次放入同一个Set

容器中。它的常用具体实现有HashSet和TreeSet类。 HashSet能快速定位一个元素,但是你放到HashSet中的对象需要实现hashCode()方法,它使用了前面说过的哈希码的算法。而TreeSet

则将放入其中的元素按序存放,这就要求你放入其中的对象是可排序的,这就用到了集合框架提供的另外两个实用类Comparable和

Comparator。 一个类是可排序的,它就应该实现Comparable接口。有时多个类具有相同的排序算法,那就不需要在每分别重复定义相同的排序算法,

只要实现Comparator接口即可。集合框架中还有两个很实用的公用类:Collections和Arrays。Collections提供了对一个Collection容器

进行诸如排序、复制、查找和填充等一些非常有用的方法,Arrays则是对一个数组进行类似的操作。

Map是一种把键对象和值对象进行关联的容器,而一个值对象又可以是一个Map,依次类推,这样就可形成一个多级映射。对于键对象来

说,像Set一样,一个Map容器中的键对象不允许重复,这是为了保持查找结果的一致性;如果有两个键对象一样,那你想得到那个键对象

所对应的值对象时就有问题了,可能你得到的并不是你想的那个值对象,结果会造成混乱,所以键的唯一性很重要,也是符合集合的性质

的。当然在使用过程中,某个键所对应的值对象可能会发生变化,这时会按照最后一次修改的值对象与键对应。对于值对象则没有唯一性

的要求。 你可以将任意多个键都映射到一个值对象上,这不会发生任何问题(不过对你的使用却可能会造成不便,你不知道你得到的到底是那一个

键所对应的值对象)。Map有两种比较常用的实现:HashMap和TreeMap。HashMap也用到了哈希码的算法,以便快速查找一个键,

TreeMap则是对键按序存放,因此它便有一些扩展的方法,比如firstKey(),lastKey()等,你还可以从TreeMap中指定一个范围以取得其子

Map。键和值的关联很简单,用pub(Object key,Object value)方法即可将一个键与一个值对象相关联。用get(Object key)可得到与此

key对象所对应的值对象。

1. 容器的分类 1.1. Collection:一组各自独立的元素,即其内的每个位置仅持有一个元素。 1) List:以元素安插的次序来放置元素,不会重新排列。 2) Set:不接爱重复元素,它会使用自己内部的一个排列机制 1.2. Map:一群成对的key-value对象,即所持有的是key-value pairs。 Map中不能有重复的key,它拥有自己的内部排列机制。 2. 容器中的元素类型都为Object。从容器取得元素时,必须把它转换成原来的类型。 List、Map、Set List 通过下标来存取 和值来存取 Map 键值对应来存取 set 存取元素是无序的

---恢复内容结束---

### 回答1: collections.Counter是Python中的一个内置模块,用于计算可哈希对象的出现次数。它返回一个字典,其中键是输入元素,值是该元素在输入中出现的次数。它可以用于统计文本中单词的出现次数,或者计算列表中元素的出现次数等。 ### 回答2: collection.Counter 是 Python 中的一个内置模块,用于统计可迭代对象中各元素出现的次数,并以字典的形式返回统计结果。以下是关于 collection.Counter 的一些重要概念和用法: 1. 统计元素出现次数:collection.Counter 可以接受可迭代对象作为参数,统计其中各元素出现的次数。 2. 创建 Counter 对象:可以使用 collection.Counter() 函数创建一个空的 Counter 对象,也可以将可迭代对象作为参数传递给该函数来创建一个 Counter 对象。 3. 访问元素出现次数:通过指定元素作为键来访问该元素在 Counter 对象中出现的次数。如果元素不存在,将返回 0。 4. 访问所有元素:可以通过调用 Counter 对象的 elements() 方法来获取包含所有元素的迭代器。其中每个元素将重复出现相应的次数。 5. 访问最常见的元素:调用 Counter 对象的 most_common() 方法可以获取按出现次数递减顺序排列的元素列表。列表中的每个元素是一个元组,包含元素和对应的次数。 6. 更新计数:可以使用 + 运算符来合并两个 Counter 对象,实现计数的更新。 7. 元素删除:可以使用 del 关键字删除 Counter 对象中的某个元素。 8. 数学运算:Counter 对象之间可以进行数学运算,例如加、减、取交集、取并集等。 总结:collection.Counter 是一个方便的工具,用于统计可迭代对象中各元素的出现次数。通过使用 Counter 对象,我们可以更高效地进行元素统计和频次分析。 ### 回答3: collection.Counter是Python中的一个计数器类,用于统计可哈希对象的数量。它是collections模块中的一部分,提供了方便的统计功能。 Counter可以接受一个可迭代对象作为参数,然后统计该可迭代对象中每个元素的数量,并以字典的形式返回结果。字典的键是可迭代对象中出现的元素,而值则是该元素出现的次数。 Counter类具有一些有用的方法,如most_common(),可以获取出现次数最多的元素,以及subtract(),可以从计数器中减去指定数量的元素。 Counter的应用场景很广泛。例如,可以用它统计一篇文章中每个单词出现的次数,或者统计一个列表中每个元素的数量。 使用Collection.Counter非常简单方便。只需导入collections模块,然后创建一个Counter对象,将需要统计的可迭代对象作为参数传入即可。 例如,我们有一个列表,想要统计其中每个元素的数量: ``` from collections import Counter my_list = ['apple', 'banana', 'apple', 'orange', 'banana', 'apple'] counter = Counter(my_list) print(counter) ``` 输出结果将会是: ``` Counter({'apple': 3, 'banana': 2, 'orange': 1}) ``` 可以看到,每个元素的数量都被正确统计并返回了。 总而言之,Collection.Counter是一个非常有用的工具类,可以用于快速统计可哈希对象的数量,并且提供了一些便捷的方法。无论是统计单词、计算列表元素频率,还是其他任何需要统计数量的场景,Counter都可以轻松胜任。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值