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; } }
相关文章推荐
- 第三节:springmvc+hibernate+spring整合实例
- Struts2学习(五)访问web元素总结
- Maven下的SpringMVC MyBatis
- struts入门案例
- Java Map接口练习(Map和List及排序)
- spring配置文件-spring-config.xml
- java设计模式学习 ----- 工厂方法模式(Factory Method)
- java设计模式——工厂模式
- 阿里java笔试题像素处理问题
- 【Eclipse】安装subclipse的Eclipse插件
- Struts(20)拦截器
- java设计模式学习 ----- 单例模式(Singleton)
- Struts学习之值栈的理解
- MyEclipse中文乱码问题
- 关于Myeclipse导入ExtJS出错的问题解决:
- 更改myeclipse中的@author
- JAVA2游戏编程——Button(1)
- Struts学习之自定义结果集
- java对文件新建,删除,复制,剪切,重命名
- java线程池的使用,实现大量数据的更新操作