---------------------- android开发、java培训、期待与您交流! ----------------------
黑马程序员-有关Collection的总结
Collection层次结构的根接口。Collection表示一组对象,这些对象也称为 collection 的元素。一些 collection 允许有重复的元素,而另一些则不允许。一些 collection 是有序的,而另一些则是无序的。JDK 不提供此接口的任何直接 实现:它提供更具体的子接口(如 Set 和 List)实现。此接口通常用来collection并在需要最大普遍性的地方操作这些 collection。
此接口中包含的“破坏性”方法,是指可修改其所操作的 collection 的那些方法,如果此 collection 不支持该操作,则指定这些方法抛出 UnsupportedOperationException。如果是这样,那么在调用对该 collection 无效时,这些方法可能,但并不一定抛出 UnsupportedOperationException。例如,如果要添加的 collection 为空且不可修改,则对该 collection 调用 addAll(Collection)方法时,可能但并不一定抛出异常。
一些 collection 实现对它们可能包含的元素有所限制。例如,某些实现禁止 null 元素,而某些实现则对元素的类型有限制。试图添加不合格的元素将抛出一个未经检查的异常,通常是 NullPointerException 或 ClassCastException。试图查询是否存在不合格的元素可能抛出一个异常,或者只是简单地返回 false;某些实现将表现出前一种行为,而某些实现则表现后一种。较为常见的是,试图对某个不合格的元素执行操作且该操作的完成不会导致将不合格的元素插入 collection 中,将可能抛出一个异常,也可能操作成功,这取决于实现本身。
相关代码例题笔记如下:
(1)---------------------------------------------------------------
/*
1,add方法的参数类型是Object.以便于接受任意类型的对象。
2,集合中存储的都是对象的引用(地址)
3,迭代器是集合取出元素的方式
*/
import java.util.*;
class CollectionDemo
{
public static void main(String[] args)
{
method_get();
}
public static void method_get()
{
ArrayList al1=new ArrayList();
al1.add("java1");
al1.add("java2");
al1.add("java3");
al1.add("java4");
Iterator it=al1.iterator();//获取迭代器,用于取出集合中的元素
while(it.hasNext())
{
sop(it.next());
}
}
public static void method_2()
{
ArrayList al1=new ArrayList();
al1.add("java1");
al1.add("java2");
al1.add("java3");
al1.add("java4");
ArrayList al2=new ArrayList();
al2.add("java7");
al2.add("java8");
al2.add("java5");
al2.add("java6");
al1.retainAll(al2);
sop("al1==="+al1);
sop("al2==="+al2);
}
public static void base_method()
{
//创建一个集合容器,使用Collection接口的子类,AyyayList
ArrayList al=new ArrayList();
al.add("java1er");//add(Object obj);
al.add("java2edygd");//添加元素
al.add("java3fghghjj");
al.add("java4234354545");
sop(al);//打印集合
sop("size="+al.size());//获取个数,即集合的长度
al.remove("java2edygd");//删除元素
sop("删除后的集合"+al);
al.clear();//清空集合
sop("java1er是否存在"+al.contains("java1er"));//判断元素
sop("集合是否为空"+al.isEmpty());
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
(2)---------------------------------------------------------------
import java.util.*;
class CollectionsDemo
{
public static void main(String[] args)
{
binarySearchDemo();
sortDemo();
}
public static void binarySearchDemo()
{
List<String> list=new ArrayList<String>();
list.add("oahskfjsjk");
list.add("ahskfjs");
list.add("jahskf");
list.add("lahs");
list.add("uaa");
list.add("xza");
list.add("xza");
Collections.sort(list);//列表集合中的元素按自然顺序排序
sop(list);
int index=Collections.binarySearch(list,"uaa");
sop("index="+index);
}
public static void sortDemo()
{
List<String> list=new ArrayList<String>();
list.add("oahskfjsjk");
list.add("ahskfjs");
list.add("jahskf");
list.add("lahs");
list.add("uaa");
list.add("xza");
list.add("xza");
sop(list);
Collections.sort(list,new Strlencomparator());//列表结合中的元素按照字符串长度进行排序
sop(list);
Collections.sort(list);//列表集合中的元素按自然顺序排序
sop(list);
String max1=Collections.max(list);//列表集合中的最大元素字符串
sop(max1);
String max2=Collections.max(list,new Strlencomparator());//列表集合中的最长长度的字符串
sop(max2);
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
class Strlencomparator implements Comparator<String>
{
public int compare(String s1,String s2)//定义字符串长度比较方法
{
if(s1.length()>s2.length())//字符串s1长度大于s2,返回正数
return 1;
if(s1.length()<s2.length())//字符串s1长度小于s2,返回负数
return -1;
return s1.compareTo(s2);//字符串s1长度等于s2,字符串s1、s2按照字符串比较方法排序
}
}
(3)---------------------------------------------------------------
/*
集合变数组:
Collection接口中的toArray方法
*/
import java.util.*;
class CollectionToArray
{
public static void main(String[] args)
{
ArrayList<String> al=new ArrayList<String>();
al.add("abc1");
al.add("abc2");
al.add("abc3");
/*
1,指定类型的数组长度小于集合的size,那么该方法内部会创建一个新的数组
长度为集合的size
当指定类型的数组长度大于了集合的size,就不会创建数组,而是使用产地进来的数组
所以创建一个刚刚好的数组最优
2,为什么要将集合变数组
为了限定对元素的操作
*/
String[] arr=al.toArray(new String[0]);
System.out.println(Arrays.toString(arr));
}
}
---------------------- android开发、java培训、期待与您交流! ----------------------