您的位置:首页 > 编程语言 > Java开发

Java 操作集合的工具类:Collections

2015-08-23 13:50 806 查看
图一:



图二:



示例代码:

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

import org.junit.Test;

public class TestCollections {
/*
* 排序操作:(均为static方法)
*		reverse(List):反转 List 中元素的顺序
*		shuffle(List):对 List 集合元素进行随机排序
*		sort(List):根据元素的自然顺序对指定 List 集合元素按升序排序
*		sort(List,Comparator):根据指定的 Comparator 产生的顺序对 List 集合元素进行排序
*		swap(List,int, int):将指定 list 集合中的 i 处元素和 j 处元素进行交换
*/
@Test
public void test1() {
List list = new ArrayList();
list.add(52);
list.add(55);
list.add(50);
list.add(32);
list.add(11);
list.add(92);
System.out.println(list);

//反转排序
System.out.println("反转排序:");
Collections.reverse(list);
System.out.println(list);

//随机排序
System.out.println("随机排序:");
Collections.shuffle(list);
System.out.println(list);
System.out.println("随机排序:");
Collections.shuffle(list);
System.out.println(list);

//从小到大排序
System.out.println("从小到大排序:");
Collections.sort(list);
System.out.println(list);

//定制排序
System.out.println("定制排序:");
Collections.sort(list, new Comparator() {
@Override
public int compare(Object o1, Object o2) {
if(o1 instanceof Integer && o2 instanceof Integer) {
Integer i1 = (Integer) o1;
Integer i2 = (Integer) o2;
return -i1.compareTo(i2);//从大到小排序
}
return 0;
}
});
System.out.println(list);

//交换
Collections.swap(list, 0, 3);
System.out.println(list);
}

/*
* 查找、替换
*
* 	Object max(Collection):根据元素的自然顺序,返回给定集合中的最大元素
*	Object max(Collection,Comparator):根据 Comparator指定的顺序,返回给定集合中的最大元素
*	Object min(Collection)
*	Object min(Collection,Comparator)
*	int frequency(Collection,Object):返回指定集合中指定元素的出现次数
*	void copy(List dest,List src):将src中的内容复制到dest中
*	boolean replaceAll(List list,Object oldVal,Object newVal):使用新值替换 List 对象的所有旧值
*/
@Test
public void test2() {
List list = new ArrayList();
list.add(52);
list.add(55);
list.add(50);
list.add(32);
list.add(11);
list.add(92);
System.out.println(list);

//获取最大值(同获取最小值)
System.out.println("获取最大值:");
System.out.println(Collections.max(list));

List list2 = new ArrayList();
list2.add(new TestCollectionsObject("GG", 22));
list2.add(new TestCollectionsObject("MM", 21));
list2.add(new TestCollectionsObject("AA", 23));
list2.add(new TestCollectionsObject("HH", 26));
list2.add(new TestCollectionsObject("EE", 25));
for (Object o : list2) {
System.out.println(o);
}
//获取自定义的最大值
System.out.println("获取自定义的最大值:");
System.out.println(Collections.max(list2, new Comparator() {
@Override
public int compare(Object o1, Object o2) {
if(o1 instanceof TestCollectionsObject && o2 instanceof TestCollectionsObject) {
TestCollectionsObject t1 = (TestCollectionsObject) o1;
TestCollectionsObject t2 = (TestCollectionsObject) o2;
return t1.getAge().compareTo(t2.getAge());//按年龄从小到大排序,获取最大年龄的对象
}
return 0;
}
}));

//获取元素出现的频率
System.out.println("获取元素出现的频率:");
System.out.println(Collections.frequency(list, 50));

//实现List的复制
System.out.println("实现List的复制:");
//List newList = new ArrayList();//错误
//List newList = new ArrayList(list.size());//错误
List newList = Arrays.asList(new Object[list.size()]);//可以把一个数组作为参数,但不能把List类型作为参数
System.out.println(newList);
Collections.copy(newList, list);
System.out.println(newList);

//使用新值替换 List对象的所有旧值
System.out.println("使用新值替换 List对象的所有旧值:");
System.out.println("旧值:" + list);
Collections.replaceAll(list, 50, 10);
System.out.println("新值:" + list);
}
}

class TestCollectionsObject {
private String name;
private Integer age;

public TestCollectionsObject(String name, Integer age) {
super();
this.name = name;
this.age = age;
}

public String getName() {
return name;
}

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

public Integer getAge() {
return age;
}

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

@Override
public String toString() {
return "TestCollectionsObject [name=" + name + ", age=" + age + "]";
}

@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((age == null) ? 0 : age.hashCode());
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}

@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
TestCollectionsObject other = (TestCollectionsObject) obj;
if (age == null) {
if (other.age != null)
return false;
} else if (!age.equals(other.age))
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: