1.测试min方法
public static void Testmin(){
ArrayList<Integer> ali=new ArrayList<>();
ali.add(1);
ali.add(2);
ali.add(3);
ali.add(4);
ali.add(5);
System.out.println(ali);
System.out.println(Collections.min(ali));
}
运行如下
[1, 2, 3, 4, 5]
1
public static void Testmin(){
ArrayList<String> ali=new ArrayList<>();
ali.add("aa");
ali.add("223");
ali.add("3");
ali.add("4");
ali.add("5");
System.out.println(ali);
System.out.println(Collections.min(ali));
}
但是当ArrayList<>元素为String类型时且传入的既有字母和数字测试如下
[aa, 223, 3, 4, 5]
223
public static <T extends Object & Comparable<? super T>> T min(Collection<? extends T> coll) {
Iterator<? extends T> i = coll.iterator();
T candidate = i.next();
while (i.hasNext()) {
T next = i.next();
if (next.compareTo(candidate) < 0)
candidate = next;
}
return candidate;
}
以上为Collections.min()方法源码
我们可以知道其比较原理是compareTo()方法
在比较字符串类型时compareTo()方法的原理我在我的博客String及有关字符串操作的补充中有过简述在这里就不多做概述了
2.测试max方法
public static void Tstmax(){
ArrayList<Integer> ali=new ArrayList<>();
ali.add(1);
ali.add(2);
ali.add(3);
ali.add(4);
ali.add(5);
System.out.println(ali);
System.out.println(Collections.max(ali));
}
其原理与min方法大同小异
3.测试reverse方法
public static void Testre(){
ArrayList<Integer> ali=new ArrayList<>();
ali.add(1);
ali.add(2);
ali.add(3);
ali.add(4);
ali.add(5);
System.out.println(ali);
Collections.reverse(ali);
System.out.println(ali);
}
此方法可以将元素反转
4.测试swap方法
public static void sw(){
ArrayList<Integer> ali=new ArrayList<>();
ali.add(1);
ali.add(2);
ali.add(3);
ali.add(4);
ali.add(5);
System.out.println(ali);
Collections.swap(ali,0,1);
System.out.println(ali);
}
此方法可以交换两个选定位置下的元素reverse方法也调用了此方法
5.测试sort方法
public static void sort(){
ArrayList<Integer> ali=new ArrayList<>();
ali.add(1);
ali.add(3);
ali.add(2);
ali.add(4);
ali.add(5);
System.out.println(ali);
Collections.sort(ali);
System.out.println(ali);
}
运行如下
[1, 3, 2, 4, 5]
[1, 2, 3, 4, 5]
即sort方法可以整理元素使元素有序排列
6.测试copy方法
以下为情况1(没有元素复制有元素)
public static void copy(){
ArrayList<Integer> ali=new ArrayList<>();
ali.add(1);
ali.add(3);
ali.add(2);
ali.add(4);
ali.add(5);
ArrayList<Integer> ali2=new ArrayList<>();
Collections.copy(ali2,ali);
System.out.println(ali2);
}
测试为
Exception in thread "main" java.lang.IndexOutOfBoundsException: Source does not fit in dest
at java.util.Collections.copy(Collections.java:558)
at Test.copy(Test.java:83)
at Test.main(Test.java:7)
当被复制的list没有元素时会报错
但是两个list都没有元素时不会
并且只要被复制的list元素少于复制的list元素时都会报错
public static void copy(){
ArrayList<Integer> ali=new ArrayList<>();
ali.add(1);
ali.add(3);
// ali.add(2);
// ali.add(4);
// ali.add(5);
ArrayList<Integer> ali2=new ArrayList<>();
ali2.add(6);
ali2.add(7);
ali2.add(8);
// ali2.add(9);
// ali2.add(10);
Collections.copy(ali,ali2);
System.out.println(ali);
}
public static void copy(){
ArrayList<Integer> ali=new ArrayList<>();
// ali.add(1);
// ali.add(3);
// ali.add(2);
// ali.add(4);
// ali.add(5);
ArrayList<Integer> ali2=new ArrayList<>();
// ali2.add(6);
// ali2.add(7);
// ali2.add(8);
// ali2.add(9);
// ali2.add(10);
Collections.copy(ali,ali2);
System.out.println(ali);
}
情况2(有相同元素复制有元素)
public static void copy(){
ArrayList<Integer> ali=new ArrayList<>();
ali.add(1);
ali.add(3);
ali.add(2);
ali.add(4);
ali.add(5);
ArrayList<Integer> ali2=new ArrayList<>();
ali2.add(6);
ali2.add(7);
ali2.add(8);
ali2.add(9);
ali2.add(10);
Collections.copy(ali2,ali);
System.out.println(ali2);
}
测试为
[1, 3, 2, 4, 5]
被复制list原有元素会被覆盖
情况3(有元素复制无元素)
public static void copy(){
ArrayList<Integer> ali=new ArrayList<>();
ali.add(1);
ali.add(3);
ali.add(2);
ali.add(4);
ali.add(5);
ArrayList<Integer> ali2=new ArrayList<>();
// ali2.add(6);
// ali2.add(7);
// ali2.add(8);
// ali2.add(9);
// ali2.add(10);
Collections.copy(ali,ali2);
System.out.println(ali);
}
}
测试如下
[1, 3, 2, 4, 5]
被复制list原有元素不会发生改变
情况4(多元素复制少元素)
public static void copy(){
ArrayList<Integer> ali=new ArrayList<>();
ali.add(1);
ali.add(3);
ali.add(2);
ali.add(4);
ali.add(5);
ArrayList<Integer> ali2=new ArrayList<>();
ali2.add(6);
ali2.add(7);
ali2.add(8);
// ali2.add(9);
// ali2.add(10);
System.out.println(ali);
Collections.copy(ali,ali2);
System.out.println(ali);
}
复制的list有多少覆盖多少原有元素后面的不改变
测试如下
[1, 3, 2, 4, 5]
[6, 7, 8, 4, 5]