import java.util.*;
/*
* Collection接口
* Collections操作集合的工具类(set list map)
*/
public class Demo1 {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("zhang");
list.add("tom");
list.add("lii");
list.add("tom");
System.out.println("原始序列:");
System.out.println(list);
//Collections,传的是地址,不是副本
System.out.println("反转之后的序列:");
Collections.reverse(list);//反转元素顺序
System.out.println(list);
//shuffle 随机排序,打乱原来的顺序
System.out.println("随机序列:");
Collections.shuffle(list);
System.out.println(list);
Collections.shuffle(list);
System.out.println(list);
//如果是一个对象的如何排序
//sort排序
System.out.println("sort排序:");
Collections.sort(list);
System.out.println(list);
//swap 交换
System.out.println("第一个与最后一个交换:");
Collections.swap(list, 0, 3);
System.out.println(list);
//获取元素出现次数frequency
int count = Collections.frequency(list, "tom");
System.out.println("tom出现的次数"+count);
//
List<Person> persList = new ArrayList<Person>();
//创建人类
Person p1 = new Person();
p1.setName("张三");
p1.setAge(20);
Person p2 = new Person();
p2.setName("张三");
p2.setAge(20);
Person p3 = new Person();
p3.setName("李四");
p3.setAge(22);
persList.add(p1);
persList.add(p2);
persList.add(p3);
//反转
Collections.reverse(persList);
System.out.println(persList);//[Person的地址]
for (Person person : persList) {
System.out.print(person.getName()+person.getAge()+" " );
}
System.out.println();
//排序
//Collections.sort(persList);
//随机
Collections.shuffle(persList);
for (Person person : persList) {
System.out.print(person.getName()+person.getAge()+" " );
}System.out.println();
}
}
public class Person {
private String name;
private int 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;
}
//重写equals方法,判断名字和年龄是否相同,相同返回true
@Override
public boolean equals(Object obj) {
if(obj==this){
return true;
}
if(obj==null){
return false;
}
Person p1 = (Person)obj;
if(p1.getName().equals(this.getName())&&p1.getAge()==this.getAge()){
return true;
}
return false;
}
//重写hashCode方法,返回一个唯一的值
@Override
public int hashCode() {
int fl=12;
int res =fl*age;
res=res*this.getName().hashCode();
return res;
}
}
运行截图:
import java.util.*;
/*
* 把数组转化成ArrayList
* 或把ArrayList转化成数组
* Arrays是数组的操作类
*/
public class Demo2 {
public static void main(String[] args) {
//空容器(ArrayList),遍历数组并赋值,循环
List list = new ArrayList<>();
//把list转化成一个数组
list.toArray();
//
int[] ii=new int[2];
int[] iii=new int[]{2,2,2};
int[] uiii={2,2,2};
List list1=Arrays.asList(2,3,4,5,6,7);
List list2=Arrays.asList(ii,ii,iii);//可变参数
System.out.println(list1);
System.out.println(list2);
sumArray(0,1,2,3);//可变参数比数组更灵活
sumArray(0,new int[]{1,2,3});
}
//可变参数和数组的定义方式是一样的
public static int sumArray(int num,int...args){
for(int i=0;i<args.length;i++){
num+=args[i];
}
return num;
}
public static int sumArray(int num,int[] args,boolean flag){
for(int i=0;i<args.length;i++){
num+=args[i];
}
return num;
}
}
运行截图: