Collections的用法

 

1.  工具类collections用于操作集合类,如List,Set,常用方法有:

1) 排序(Sort)

    使用sort方法可以根据元素的自然顺序 对指定列表按升序进行排序。列表中的所有元素都必须实现 Comparable 接口。此列表内的所有元素都必须是使用指定比较器可相互比较的

double array[] = {112, 111, 23, 456, 231 }; 
for (int i = 0; i < array.length; i++) { 
list.add(new Double(array[i])); 

Collections.sort(list); 
for (int i = 0; i < array.length; i++) { 
   System.out.println(li.get(i)); 
}  
//结果:112,111,23,456,231

    2) 混排(Shuffling)

    混排算法所做的正好与 sort 相反: 它打乱在一个 List 中可能有的任何排列的踪迹。也就是说,基于随机源的输入重排该 List, 这样的排列具有相同的可能性(假设随机源是公正的)。这个算法在实现一个碰运气的游戏中是非常有用的。例如,它可被用来混排代表一副牌的 Card 对象的一个 List .另外,在生成测试案例时,它也是十分有用的。

Collections.Shuffling(list) 
double array[] = {112, 111, 23, 456, 231 }; 
for (int i = 0; i < array.length; i++) { 
list.add(new Double(array[i])); 

Collections.shuffle(list); 
for (int i = 0; i < array.length; i++) { 
   System.out.println(li.get(i)); 

//结果:112,111,23,456,231
    3) 反转(Reverse)

    使用Reverse方法可以根据元素的自然顺序 对指定列表按降序进行排序。

Collections.reverse(list) 
double array[] = {112, 111, 23, 456, 231 }; 
for (int i = 0; i < array.length; i++) { 
list.add(new Double(array[i])); 

Collections. reverse (list); 
for (int i = 0; i < array.length; i++) { 
   System.out.println(li.get(i)); 

//结果:231,456,23,111,112

    4) 替换所有的元素(Fill)

    使用指定元素替换指定列表中的所有元素。

String str[] = {"dd","aa","bb","cc","ee"}; 
for(int j=0;j<str.length;j++){ 
li.add(new String(str[j])); 

Collections.fill(li,"aaa"); 
for (int i = 0; i < li.size(); i++) { 
System.out.println("list[" + i + "]=" + li.get(i)); 


//结果:aaa,aaa,aaa,aaa,aaa

    5) 拷贝(Copy)

    用两个参数,一个目标 List 和一个源 List, 将源的元素拷贝到目标,并覆盖它的内容。目标 List 至少与源一样长。如果它更长,则在目标 List 中的剩余元素不受影响。

    Collections.copy(list,li): 后面一个参数是目标列表 ,前一个是源列表

double array[] = {112, 111, 23, 456, 231 }; 
List list = new ArrayList(); 
List li = new ArrayList(); 
for (int i = 0; i < array.length; i++) { 
list.add(new Double(array[i])); 

double arr[] = {1131,333}; 
String str[] = {"dd","aa","bb","cc","ee"}; 
for(int j=0;j<arr.length;j++){ 
li.add(new Double(arr[j])); 

Collections.copy(list,li); 
for (int i = 0; i <list.size(); i++) { 
System.out.println("list[" + i + "]=" + list.get(i)); 

//结果:1131,333,23,456,231

    6) 返回Collections中最小元素(min)

    根据指定比较器产生的顺序,返回给定 collection 的最小元素。collection 中的所有元素都必须是通过指定比较器可相互比较的

Collections.min(list) 
double array[] = {112, 111, 23, 456, 231 }; 
List list = new ArrayList(); 
for (int i = 0; i < array.length; i++) { 
list.add(new Double(array[i])); 

Collections.min(list); 
for (int i = 0; i <list.size(); i++) { 
System.out.println("list[" + i + "]=" + list.get(i)); 

//结果:23
      7) 返回Collections中最大元素(max)

    根据指定比较器产生的顺序,返回给定 collection 的最大元素。collection 中的所有元素都必须是通过指定比较器可相互比较的

Collections.max(list) 
double array[] = {112, 111, 23, 456, 231 }; 
List list = new ArrayList(); 
for (int i = 0; i < array.length; i++) { 
list.add(new Double(array[i])); 

Collections.max(list); 
for (int i = 0; i <list.size(); i++) { 
System.out.println("list[" + i + "]=" + list.get(i)); 

//结果:456

    8) lastIndexOfSubList

    返回指定源列表中最后一次出现指定目标列表的起始位置,即按从后到前的顺序返回子List在父List中的索引位置。

int count = Collections.lastIndexOfSubList(list,li); 
double array[] = {112, 111, 23, 456, 231 }; 
List list = new ArrayList(); 
List li = new ArrayList(); 
for (int i = 0; i < array.length; i++) { 
list.add(new Double(array[i])); 

double arr[] = {111}; 
String str[] = {"dd","aa","bb","cc","ee"}; 
for(int j=0;j<arr.length;j++){ 
li.add(new Double(arr[j])); 

Int locations = Collections. lastIndexOfSubList (list,li); 
System.out.println(“===”+ locations); 
//结果 3

    9) IndexOfSubList

    返回指定源列表中第一次出现指定目标列表的起始位置

int count = Collections.indexOfSubList(list,li); 
double array[] = {112, 111, 23, 456, 231 }; 
List list = new ArrayList(); 
List li = new ArrayList(); 
for (int i = 0; i < array.length; i++) { 
list.add(new Double(array[i])); 

double arr[] = {111}; 
String str[] = {"dd","aa","bb","cc","ee"}; 
for(int j=0;j<arr.length;j++){ 
li.add(new Double(arr[j])); 

Int locations = Collections.indexOfSubList(list,li); 
System.out.println(“===”+ locations); 
//结果 1

    10) Rotate

    根据指定的距离循环移动指定列表中的元素

    Collections.rotate(list,-1);

    如果是负数,则正向移动,正数则方向移动

double array[] = {112, 111, 23, 456, 231 }; 
List list = new ArrayList(); 
for (int i = 0; i < array.length; i++) { 
list.add(new Double(array[i])); 

Collections.rotate(list,-1); 
for (int i = 0; i <list.size(); i++) { 
System.out.println("list[" + i + "]=" + list.get(i)); 

//结果:111,23,456,231,112


2.  接口List的subList(int fromIndex, int toIndex)返回一个子List,该List中的元素从fromIndex开始,到toIndex为止.


### 回答1: Python中的collections模块提供了一些有用的数据类型,如defaultdict、OrderedDict、Counter等。这些数据类型可以帮助我们更方便地处理数据,提高代码效率。 其中,defaultdict是一个字典类型,它可以自动为不存在的键创建一个默认值。OrderedDict是一个有序字典类型,它可以按照插入顺序来遍历字典。Counter是一个计数器类型,它可以用来统计元素出现的次数。 除此之外,collections模块还提供了一些其他的数据类型和工具函数,如deque、namedtuple等。这些数据类型和函数都可以帮助我们更好地处理数据,提高代码的可读性和可维护性。 ### 回答2: Python的collections模块是一个提供了一些特定数据类型的扩展集合的模块。它包含了一些有用的数据结构,可以帮助我们更方便地管理数据。 collections模块中的一些常用数据类型包括: 1. Counter(计数器):用于创建一个可哈希对象的计数集合。它可以帮助我们快速统计一个可迭代对象中每个元素出现的次数。 2. defaultdict(默认字典):它是内建字典类型(dict)的一个子类,它封装了一个工厂函数,为字典提供默认值,即使该键在字典中不存在。 3. OrderedDict(有序字典):它是一个有序的字典,可以记住键-值对的添加顺序。 4. deque(双向队列):它是一个线程安全的、可以从两端操作的序列。它比列表在对首部进行插入和删除的操作效率更高。 5. namedtuple(命名元组):它是一个具名元组子类的工厂函数,可以创建具有命名字段的元组。它可以作为快速创建简单类的替代方法。 这些数据类型在处理数据时非常有用,能够极大地简化我们的代码,提高代码的效率和可读性。 要使用collections模块中的数据类型,我们首先需要导入collections模块,然后根据需要创建相应的数据类型的实例,进而使用实例对象来进行操作。例如,我们可以使用Counter计数集合来统计一个列表中元素的频率,使用defaultdict来组织和计算数据集合等等。 总之,collections模块为我们提供了一些非常有用的数据结构,可以帮助我们更加高效地处理和组织数据。通过使用collections模块,我们可以更加简洁地编写代码,提高代码的可读性和效率。 ### 回答3: Python中的collections模块提供了一组有用的容器数据类型,用于扩展内置的数据类型(如字典、列表、元组等)以及提供额外的数据结构。 1. defaultdict(默认字典):它是一个继承自字典的子类,用于构建默认值不同的字典。它可以指定字典中的键的默认值,在试图访问不存在的键时,会返回默认值而不会抛出KeyError。 2. Counter(计数器):它是一个有助于计数的字典子类。它可以用来统计可迭代对象中每个元素的出现次数,并以字典形式返回结果。可以很方便地计算频率、找出最常见的元素等。 3. deque(双向队列):它是一个有序的可变序列,在两端均可进行高效的插入和删除操作。它支持线性时间的append和pop操作,以及快速的旋转和索引操作。 4. namedtuple(命名元组):它是一个具名的元组子类,用于创建具有名称的元组。它可以提供更直观和可读性更高的数据结构,使代码更加易于理解。 5. OrderedDict(有序字典):它是一个有序的字典子类,在字典中保持元素的插入顺序。它可以按照元素插入的顺序遍历字典,非常适合于需要保持顺序的应用场景。 6. ChainMap(链式映射):它能够将多个字典或映射对象链式组合在一起,创建一个可搜索的字典。它可以方便地查找和更新多个字典中的值,从而减少代码的复杂性。 总的来说,collections模块提供了一些有用的数据结构,使得开发者能够更加高效地处理不同的数据类型和数据结构。这些数据结构在解决一些特定问题时非常实用,能够提高代码的可读性和可维护性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值