Collections和Collection的区别

微信公众号:非科班的科班
关注可获得更多的Java教程。问题或建议,请公众号留言;
如果你觉得文章对你有帮助,欢迎赞赏[1]

Collections工具类和集合接口Collection

Collections和Collection的区别

Collections是一个工具类,里面具有操作集合的相关方法,而Collection是集合的公共接口,其子类有我们常用的List和Set集合

集合工具类

方法:

addAll(集合, 值1, 值2, 值3...)
一次向集合添加多个值
sort(集合)
优化的合并排序
binarySearch(集合, 目标值)
二分法查找
在有序集合中,查找目标值的位置
如果目标值不存在,返回 -(插入点+1)

练习 Collections工具类
项目:demo_Collections工具类
类:demo.Test

package demo;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
public class Test {
public static void main(String[] args) {
    ArrayList<String> list = new ArrayList<String>();
    Collections.addAll(
        list,
        "1","22","20","30","11",
        "31","3","10","2","21","12");
    System.out.println(list);
    Collections.sort(list);//对字符串按字符排序
    System.out.println(list);
    Comparator<String> comp = new Comparator<String>() {
        /*
         * o1和o2比较大小
         * o1大,返回正数
         * o1小,返回负数
         * 相同,返回0
         */

        @Override
        public int compare(String o1, String o2) {
           int a = Integer.parseInt(o1);
           int b = Integer.parseInt(o2);
           return a-b;
        }
    };
    //sort()运算过程中,使用比较器对象comp
    //对数据大小进行比较
    Collections.sort(list, comp);
    System.out.println(list);
}
}

日期的比较:

package demo;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
public class Test2 {
/*
 * "2019-6-22"
 * "2019-6-1"
 * "2019-6-2"
 * "2019-6-19"
 * "2019-6-10"
 * "2019-6-21"
 * "2019-6-3"
 */

public static void main(String[] args) {
    f1();
}

private static void f1() {
    ArrayList<String> list = new ArrayList<String>();
    Collections.addAll(
     list,
     "2019-6-22",
     "2019-6-1",
     "2019-6-2",
     "2019-6-19",
     "2019-6-10",
     "adsfgsdfhdfgsfdsdfg",
     "2019-6-21",
     "2019-6-3");
    Collections.sort(list);
    System.out.println(list);

    Collections.sort(listnew Comparator<String>() {
        @Override
        public int compare(String o1, String o2) {
           // String --SimpleDateFormat--> Date
           //处理日期格式的工具
           SimpleDateFormat sdf =
            new SimpleDateFormat("yyyy-MM-dd");
           try {
              //用格式工具对o1字符串进行解析,解析成Date实例
              Date d1 = sdf.parse(o1);
              Date d2 = sdf.parse(o2);
              return d1.compareTo(d2);//两个日期比大小
           } catch (ParseException e) {
              //一般捕获异常要进行修复
              //但此处不处理这个异常,还要再抛出去
              throw new RuntimeException(e);
           }
        }
    });
    System.out.println(list);
}
}

随机生成有序整数集合
34
[12,34,56,56,76,76,89]

package demo;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Random;
import java.util.Scanner;
public class Test2 {
public static void main(String[] args) {
    ArrayList<Integer> list = new ArrayList<Integer>();
    System.out.println("按回车插入值");
    while (true) {
        new Scanner(System.in).nextLine();
        int r = new Random().nextInt(100);
        //确定插入点
        //找到,得到r的下标位置,就是插入点
        //找不到,得到 -(插入点+1)
        int index = Collections.binarySearch(list, r);
        if (index>=0) {
           list.add(index, r);
        } else {
           list.add(-index-1, r);
        }
        System.out.println(list);
    }
}
}

集合的迭代器遍历

for(Iterator<String> it = list.iterator(); it.hasNext(); ) {
String s = it.next();
//处理s
}

微信公众号:非科班的科班
欢迎关注我,一起学习,一起进步!

发布了49 篇原创文章 · 获赞 32 · 访问量 2225

猜你喜欢

转载自blog.csdn.net/qq_43255017/article/details/102890586