Collections集合类使用方法

1、

package com.fish.util;
import java.util.ArrayList;
import java.util.Collections;
/*
 集合的工具类(Collections)
 说出Collection与Collections的区别?
 1、 Collection是一个单例集合的根接口,Collections是操作对象的一个工具类。
 
 Collections:常见方法:
 
 1,对list进行二分查找:前提该集合一定要有序。
 int binarySearch(list,key); //必须根据元素自然顺序对列表进行升级排序
 int binarySearch(list,key,Comparator); //要求list 集合中的元素都是Comparable 的子类。
 
 2,对list集合进行排序。
 sort(list); //对list进行排序,其实使用的事list容器中的对象的compareTo方法
 sort(list,comaprator); //按照指定比较器进行排序
 
 3,对集合取最大值或者最小值。
 max(Collection)
 max(Collection,comparator)
 min(Collection)
 min(Collection,comparator)
 
 4,对list集合进行反转。
 reverse(list);
 
 5,可以将不同步的集合变成同步的集合。
 Set synchronizedSet(Set<T> s)
 Map synchronizedMap(Map<K,V> m)
 List synchronizedList(List<T> list)
 */
 
 
public class Demo1 {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<Integer>();
        list.add(1);
        list.add(12);
        list.add(2);
        list.add(19);
        
        // 排序
        Collections.sort(list);
        System.out.println("元素所在的索引值是:" + Collections.binarySearch(list, 12));
        System.out.println("最大值:" + Collections.max(list));
        System.out.println("最小值:" + Collections.min(list));
        Collections.reverse(list); //翻转不需要用到排序
        
        System.out.println("集合的元素:" + list);
        
        list=(ArrayList<Integer>) Collections.synchronizedList(list);//将list转换为线程安全的方法
    }
}
package com.fish.util;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
class Person{
    String name;
    int age;
    
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
    @Override
    public String toString() {
        return "{姓名:"+this.name+" 年龄:"+this.age+"}";
    }
}

class AgeComparator implements Comparator<Person>{
    @Override
    public int compare(Person o1, Person o2) {
        return o1.age-o2.age;
    }
}

    public class Demo2 {
        public static void main(String[] args) {
            ArrayList<Person> list = new ArrayList<Person>();
            list.add(new Person("狗娃",12));
            list.add(new Person("张三",22));
            list.add(new Person("李四",2));
            
            Collections.sort(list,new AgeComparator());
            
            System.out.println("元素所在的索引值是:"+Collections.binarySearch(list, new Person("张三",22), new AgeComparator()));
            
            System.out.println("最大值:"+Collections.max(list,new AgeComparator()));
            System.out.println("最小值:"+Collections.min(list,new AgeComparator()));
            
            Collections.reverse(list); //翻转不需要用到排序,所以不需要传入比较器
            System.out.println("集合的元素:"+list);
        }
}
时间: 2024-09-28 15:36:55

Collections集合类使用方法的相关文章

集合类 Contains 方法 深入详解 与接口的实例

.Net 相等性:集合类 Contains 方法 深入详解 http://www.cnblogs.com/ldp615/archive/2009/09/05/1560791.html 1.接口的概念及声明接口是一种用来定义程序的协议,它描述可属于任何类或结构的一组相关行为.接口可有方法.属性.事件和索引器或这四种成员的任何组合类型,但不能包含字段.那么接口具有哪些特点呢?·接口类似于抽象基类:继承接口的任何非抽象类型都必须实现接口的所有成员(说明:如类A继承接口B,那么A中必须实现B中定义的属性

Collections中sort()方法源代码的简单分析

Collections的sort方法代码: public static <T> void sort(List<T> list, Comparator<? super T> c) { Object[] a = list.toArray(); Arrays.sort(a, (Comparator)c); ListIterator i = list.listIterator(); for (int j=0; j<a.length; j++) { i.next(); i.

【Java】Collections中sort方法Comparator的重写

很多人只会用Collections中不带比较器Comparator的sort方法完成一些对存储整形Integer的动态数组ArrayList的简单排序,包括我之前,此前仅仅在<[Java]Java中的Collections类--Java中升级版的数据结构>(点击打开链接)介绍Collections中sort方法的简单用法. igz 面对eclipse所给出的说明,根本就不知道这个sort方法如何重写,如果我对一个存储Student类的动态数组进行以学生的学号为根据,姓名为根据进行排序,那该如何

常用集合类使用方法

在编程中,我们经常需要考虑数据的储存方法——到底用什么东西去安置这些数据呢? 一般,少的可以用数组,但是数组只能存放规定大小.同一类型的数据:这样的话,不定长的可以试试链表,但是链表检索起来需要从头到尾,一旦数据多了会很慢.如果需要为一个对象存放多个不同类型的数据,可以用结构体,制作成链表.但是在Java中,更推荐用封装类来实现,用一个类来封装这些不同数据类型的数据,然后我们只需储存.管理类对象即可.如果事先知道有多少数据的话,可以用对象数组来储存.然而,实际应用中更多是不知道有多少数据的,那该

Java记录 -67- 深入剖析Collections的sort方法

Collections类可以将存储与List中的元素进行排序,可以按照针对元素的排序方法进行排序,也可以按照指定的排序类进行排序. Collections类提供了两个静态的sort方法: sort(List<T> list) sort(List<T> list, Comparator<? super T> c) 第一个方法是直接将List中的元素进行排序,排序方法需要List中存储的元素来提供,即存储的元素要是可排序的: 第二个方法除了提供要排序的List外,还需要提供

Collections.synchronizedList 工厂方法

通常的Map,Set,List实现都不是线程安全的,通过这些工厂方法可以得到相应的同步容器,相当于增强了访问控制,把一个链表对象传递过来后,我们都通过返回的这个链表对象来进行各种操作(都是同步方法),而不再操纵底层的那个链表.此外,在Vector和同步封装器类中是用内置锁来来支持客户端加锁,所以我们可以进行扩展. 在对对链表迭代的过程中也要注意加锁,否则在迭代的过程中,如果其他某个线程改变了容器的属性,next,hasNext方法就会抛出ConcurrentModificationExcepti

Collections的sorts方法

List list1=Arrays.asList(3,2,1); Collections.sort(list1); List list2=Arrays.asList("abcd","sdf","sss"); Collections.sort(list2); 上面两行代码,都可以正确的以asc方式排序. 然而,如果新建一个对象呢?看起来似乎可以. Student.java代码: public class Student { private int

问题6:如何让字典保持有序(使用collections的OrderedDict方法)

from collections imort OrderedDict d = OrderedDict() d['aa'] = (1, 30) d['bb'] = (2, 31) d['cc'] = (3, 32) 验证: for k in d: print(k) 输出:aa  bb  cc(按输入时的顺序输出) 原文地址:https://www.cnblogs.com/volcao/p/8727992.html

Python:collections的deque()方法

deque:双端循环队列: deque(序列, n):创建一个容量为n的序列队列,可以存储n个数,当添加第n+1个数时,第1个数自动被挤出: 例: from collections import deque q = deque([], 3) q.append(1) q.append(2) q.append(3) print(q)  输出:deque([1, 2, 3]) q.append(4) print(q)  输出:deque([2, 3, 4]) 原文地址:https://www.cnbl