1、java.util.Collection 是一个集合接口。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式。 Collection ├List │├LinkedList │├ArrayList │└Vector │ └Stack └Set 具体的张开等请等下次做分解。文中有一个需要注意的地方,map也是一个集合,但它不是继承与Collection接口,这个问题,在面试的时候,要特别注意面试官给你挖的坑。 2、java.util.Collections 是一个包装类。它包含有各种有关集合操作的静态多态方法。此类不能实例化,就像一个工具类,服务于Java的Collection框架。而且Collection 提供一系列静态方法实现对各种集合的搜索、排序、线程安全等操作。 Collections: 1、排序(Sort) 2、混排(Shuffling) 3、反转(Reverse) 4、替换所以的元素(Fill) 5、拷贝(Copy) 6、返回Collections中最小元素(min) 7、返回Collections中最小元素(max) 8、lastIndexOfSubList(返回指定源列表中最后一次出现指定目标列表的起始位置) 9、IndexOfSubList(返回指定源列表中第一次出现指定目标列表的起始位置) 10、Rotate(根据指定的距离循环移动指定列表中的元素) 这10个方法我们将会一一张开,但我们今天主要说排序(sort),排序大家都不陌生,有大家熟悉的一些算法排序,比如冒泡等。我们看下java的API里面对sort是怎么定义的。 Java集合概述Collection与Collections Java集合概述Collection与Collections 我们看个例子: int array[] = {112, 111, 23, 456, 231 }; for(int i = 0; i < array.length; i++){ list.add(array); } Collections.sort(list); for (int i = 0; i < array.length; i++) { System.out.println(li.get(i)); } 那这个输出是多少? 结果是: 23 111 112 231 456 故我们很多时候说要对一个数组进行排序的时候,我们使用的sort方法,已可以解决一大部分的问题,当然更复杂或者纯算法的排序,不在本次的讨论之中。 那sort到底是升序还是降序的呢? 其实这个是我们自己就可以做的定义,例子说话 public class Test { private static final Logger LOGGER = LoggerFactory.getLogger(Test.class); public static void main(String[] args) { List<TestA> listA = new ArrayList<TestA>(); //TestA 即是上面类 TestA a1 = new TestA(); a1.setName("小胖A"); a1.setOrder(1); listA.add(a1); TestA a5 = new TestA(); a5.setName("小胖B"); a5.setOrder(5); listA.add(a5); TestA a3 = new TestA(); a3.setName("小胖C"); a3.setOrder(3); listA.add(a3); LOGGER.info("listA 排序前:" + listA.toString()); Collections.sort(listA, new Comparator<TestA>() { @Override public int compare(TestA o1, TestA o2) { //升序 return o1.getOrder().compareTo(o2.getOrder()); } }); LOGGER.info("listB 升序排序后:" +listA.toString()); Collections.sort(listA, new Comparator<TestA>() { @Override public int compare(TestA o1, TestA o2) { //降序 return o2.getOrder().compareTo(o1.getOrder()); } }); LOGGER.info("listB 降序排序后:" +listA.toString()); } } 结果呢?大家自行在IDE工具中进行编译一下看下结果。里面有注意的是这是因为String本身含有compareTo方法,所以可以直接调用sort方法,所以要让类TestA实现Comparable方法。这个是我们要注意的地方。 本文出自网络!由甲爪广告联盟(http://www.jiazhua.com)整理编辑! 转载请注明! |