在实际开发中,将使用的对象存储到特定数据结构的容器中,而JDK提供了这样的容器——集合框架,集合框架中包含了一系列不一样数据结构的实现类。
java
1)Collection经常使用方法
数组
①int size():返回包含对象的个数,
安全
②boolean isEmpty():返回是否为空,
数据结构
③boolean contains(Object o):判断是否包含某指定对象,
框架
④boolean add(E e) :向集合中添加对象,
性能
⑤boolean remove(Object o):从集合中删除对象。
spa
2)Collection 与Collections的区别?
线程
Collection是java.util下的接口,是各类集合的父接口,继承于他的接口有list,set。Collections是java.util下的类,是针对集合的帮助类,提供一系列的静态方法,对各类集合进行检索,排序,线程安全化操做。
code
List接口是Collection的子接口,用于定义线性表数据结构,元素能够重复,有序的,有索引值。能够将list理解为存储对象的数组,只不过其元素能够动态的增长或减小。
对象
1)List接口有两个实现类:ArrayList和LinkedList。分别用动态数组和链表的方式实现了List接口。List、ArrayList和LinkedList在java.util包下。
2)能够认为ArrayList和LinedList方法在逻辑上是同样的,只是在性能上有必定的差异,ArrayList更适合随机的访问,而LinkedList更适合插入、删除。在性能要求不是特别苛刻的话能够忽略这个差异。
3)使用List咱们不须要再集合建立的时候就虑集合的容量,容量是根据保存的元素来决定的,集合的容量能够激动扩充。
4)List的实现类会重写toString方法,依次调用集合中对象的toString方法,返回集合中所包含的对象的字符串。
5)List集合的经常使用方法:
①add(Object obj):向集合末尾增长新元素,集合能够存放各类类型的元素,可是咱们几乎不会向集合中添加不一样类型的元素。
②size():返回当前集合中存放元素的数量。
③clear():用于清空集合。
④isEmpty():用于返回集合是否为空。
List list = new ArrayList() ; list.add("Hello") ; list.add("World") ; list.add(1) ; //不建议这样添加,一个集合最好存放一种类型元素。 System.out.println(list.size()) ; //返回集合中存放元素的数量 System.out.println(list) ; //System.out.println(list.toString());//查看集合中元素 //ArrayList()重写了toString()方法,返回的字符串是每一个元素的toString()方法返回的序列。 list.clear(); //清空,System.out.println("集合清空后的数量"+list.size()); System.out.println("集合是否为空?"+list.isEmpty());
⑤contains(Object obj)方法:检查给定的对象是否包含在集合中,检查规则将obj对象与集合中元素进行equals比较,若是对比了全部元素都没有equals为true,则返回false。
⑥boolean remove(Object obj)方法:删除元素,首先不重写equals,在集合中根据对象地址匹配,若是没有匹配到,则不删除,重写equals方法,为内容比较,匹配成功,则删除第一个,则退出,其余的内容即便相同也不会删除。
List list = new ArrayList() ;//多态的写法//ArrayList arraylist = new ArrayList() ;//正常写法 list.add(new Point(1,2)) ; //Point point = new Point(1,2); list.add(point) ; //等量交换 list.add(new Point(3,4)) ; list.add(new Point(5,6)) ; System.out.println("集合中的元素数量:"+list.size()) ; //查看集合中元素 System.out.println(list) ; == System.out.println(list.toString()); Point p = new Point(1,2) ; //定义一个对象 System.out.println("查看p是否在集合中存在"+list.contains(p)) ;//不重写equals比较地址为false,重写equals为true。 System.out.println("删除前元素:"+list) ; list.remove(p); System.out.println("删除后集合:"+list) ;
⑦E remove(int index)方法:移除此集合列表中指定位置的元素,向左移动后续元素,为了防止漏删,必须从后往前删。
List list = new ArrayList() ; list.add("Hello") ; list.add("World") ; list.add("World") ; list.add("Hello") ; //相邻的元素删不掉 for(int i=0;i<list.size();i++){ if("Hello".equals(list.get(i)) list.remove(i) ; } //匹配的都删干净,从后往前删 for(int i=list.size()-1;i>=0;i--){ if("Hello".equals(list.get(i)) ; list.remove(i) ; }
⑧addAll(Collection c)方法:容许将c对应的集合元素都存入到该集合,即并集。这里的参数是Collection,即任何元素类型均可以将元素存入到其余集合中。
⑨removeAll(Collection c)方法:删除与另外一个集合中相同的元素。它的相同逻辑经过equals判断。
10,retainAll(Collection c)方法:保留与另外一个集合相同的元素,即取交集,它的相同逻辑经过equals判断。
list1.addAll(list2) ; //将list3集合中元素存入到list1集合,表示并集 list1.removeAll(list3) ; //将list1集合中元素中的list3集合中相同(equals为true)元素删除 list1.retainAll(list2) ; //将list1与list2集合中相同元素保留经过equals为true判断。
11,Object get(int index)方法:根据元素下标取得对应位置的元素并返回,这里元素下标和数组同样。
12,add(int index,Object newElement())方法:使用add的重载方法,向index位置插入newElement(),原位置的元素向后移,即所谓插队。
13,Object remove(int index)方法:根据下标删除对应元素,并返回被删除元素。
14,Comparable接口:针对对象数据和集合中元素进行排序时,首先要肯定对象元素的比较逻辑。Comparable接口用于表示对象间的大小关系。
15,Comparator接口:比较器。建立步骤:A,定义一个类实现Comparator接口。B,实现接口中的抽象compara(E 01,E 02)方法,C,实例化这个类即实例化比较器,D,调用collections重载方法 sort(Collection c,Comparator comparator)进行排序,