微信公众号:非科班的科班
关注可获得更多的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(list, new 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
}
微信公众号:非科班的科班
欢迎关注我,一起学习,一起进步!