首页 > 编程语言 >Java难点 | Collections集合工具类

Java难点 | Collections集合工具类

时间:2022-12-27 19:35:48浏览次数:42  
标签:难点 Java name age person add Collections Student public

Collections集合工具类

在这里插入图片描述 在这里插入图片描述

addAll和shuffle方法

代码示例

/*
    public static <T> boolean addAll(collection<T> c,T...elements):往集合添加多个元素
    public static void shuffle(List<?> list) 打乱顺序:打乱集合顺序
 */
public class aa {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        //往集合添加多个元素
        list.add("a");
        list.add("b");
        list.add("c"); //要一个一个加
        //public static <T> boolean addAll(collection<T> c,T...elements):往集合添加多个元素
        Collections.addAll(list,"a","b","c"); //它的参数是可变参数,可以传递任意多个元素
        System.out.println(list); //[a, b, c, a, b, c]

        //public static void shuffle(List<?> list) 打乱顺序:打乱集合顺序
        Collections.shuffle(list);
        System.out.println(list); //[c, a, b, b, c, a] 每次重复的都不一样

    }
}

sort方法1

在这里插入图片描述 代码示例

/*
    public static <T> void sort(List<T> list):将集合中元素按照,默认规则排序  (里面只能传递list集合不能set)
    注意事项:
        sort(List<T> list)使用前提 (传递的是自定义类型的话)
        被排序的集合里面存储的元素,必须实现Comparable接口,重写接口中的方法compareTo定义排序的规则
    Comparable排序规则:
        自己(this)-参数;升序
 */
public class bb {
    public static void main(String[] args) {
        ArrayList<Integer> list01 = new ArrayList<>();
        list01.add(1);
        list01.add(3);
        list01.add(2);
        System.out.println(list01);//[1, 3, 2]

        //public static <T> void sort(List<T> list):将集合中元素按照,默认规则排序
        Collections.sort(list01); // 默认是升序
        System.out.println(list01); //[1, 2, 3]

        ArrayList<String> list02 = new ArrayList<>();
        Collections.addAll(list02,"a","c","b");
        System.out.println(list02); //[a, c, b]

        Collections.sort(list02); // 默认是升序
        System.out.println(list02); //[a, b, c]

        //对自定义类型排序
        ArrayList<person> list03 = new ArrayList<>();
        list03.add(new person("张三",18));
        list03.add(new person("李四",20));
        list03.add(new person("王五",15));
        System.out.println(list03);//[person{name='张三', age=18}, person{name='李四', age=20}, person{name='王五', age=15}]
        Collections.sort(list03);
        System.out.println(list03);//[person{name='王五', age=15}, person{name='张三', age=18}, person{name='李四', age=20}]
    }
}

public class person implements Comparable<person>{
    private String name;
    private int age;

    //重写排序的规则
    @Override
    public int compareTo(person o) {
//        return 0; //认为元素都是相同的
        //自定义比较的规则,比较两个人的年龄(this,person)
        return this.getAge()-o.getAge(); //年龄升序排序
//        return o.getAge()-this.getAge(); //年龄降序排序
    }

    public person() {
    }
    public person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    @Override
    public String toString() {
        return "person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
    
}

sort方法2

在这里插入图片描述 代码示例

public class cc {
    public static void main(String[] args) {
        ArrayList<Integer> list01 = new ArrayList<>();
        list01.add(1);
        list01.add(3);
        list01.add(2);
        System.out.println(list01);//[1, 3, 2]
        Collections.sort(list01, new Comparator<Integer>() { //使用匿名内部类
            //重写比较的规则
            @Override
            public int compare(Integer o1, Integer o2) {
//                return o1-o2;//升序
                return o2-o1;//降序
            }
        });
        System.out.println(list01); //[3, 2, 1]

        //比较自定义类型
        ArrayList<Student> list02 = new ArrayList<>();
        list02.add(new Student("迪丽热巴",18));
        list02.add(new Student("古力娜扎",20));
        list02.add(new Student("杨幂",17));
        System.out.println(list02);
        //[Student{name='迪丽热巴', age=18}, Student{name='古力娜扎', age=20}, Student{name='杨幂', age=17}]

        Collections.sort(list02, new Comparator<Student>() {
            @Override
            public int compare(Student o1, Student o2) {
                //按照年龄升序排序
                return o1.getAge()- o2.getAge();
            }
        });
        System.out.println(list02);
        //[Student{name='杨幂', age=17}, Student{name='迪丽热巴', age=18}, Student{name='古力娜扎', age=20}]
    }
}


public class Student {
    private String name;
    private int age;

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public Student() {
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

标签:难点,Java,name,age,person,add,Collections,Student,public
From: https://blog.51cto.com/u_15841797/5973425

相关文章

  • 30_Java中的反射
    Java中的反射一、类加载器1、类加载:类加载的描述​ 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过类的加载,类的连接,类的初始化这三......
  • 如何用JAVA调用服务器系统指令
    java在企业级项目开发中,无论是强制性的功能需要,还是为了简便java的实现,需要调用服务器命令脚本来执行。在java中,RunTime.getRuntime() .exec() 就实现了这个功能。 用法:......
  • 如何对生产环境的JAVA应用进行远程调试
    JAVA自身支持调试功能,并提供了一个简单的调试工具--JDB,类似于功能强大的GDB,JDB也是一个字符界面的调试环境,并支持设置断点,支持线程线级的调试。 1.在服务器上的进程启动参数......
  • JAVA各种引用(Reference)的汇总
    HardReference强引用一般的人一般的程序最常用的引用SoftReference软引用除非JVM即将OutOfMemory,否则不会被GC回收。这个特性使得它特别适合设计对象Cache。对于Cache,我们......
  • Web项目如何引用其他java项目
    Web项目为DynamicWebProject,Tomcat插件下载地址:http://tomcatplugin.sf.net/update1.将tomcatplugin插件中的DevloaderTomcat7.jar拷贝到tomcat安装目录下的lib文件......
  • Java与C通信要注意的几个问题
    1.大尾(big_endian)小尾(little_endian)的问题基于Web的测试软件是由C++数据采集服务器程序和客户端Java显示程序两部分构成,前者用C++,后者Java语言,存在数据移植问题。因为......
  • Java和MySQL数据类型对应一览
    Table 20.25. MySQLTypestoJavaTypesforResultSet.getObject()MySQLTypeNameReturnvalueofGetColumnClassNameReturnedasJavaClassBIT(1) (new......
  • java localDataTime
                               ......
  • java流Stream
    有一个列表,从中筛选出值大于30的元素。看看用传统的做法和Java流的做法有什么不同。List<Integer>list=newArrayList<>();list.add(1);list.add(20);list.add(40);......
  • Java: ParameterizedType用法与简介(转载)
    转载地址:https://blog.csdn.net/sageyin/article/details/114701550https://www.cnblogs.com/baiqiantao/p/7460580.html......