1.集合就是一个存储数据的容器
数组长度固定而且可以存储基本数据类型或者引用类型,集合长度随意只能存储引用数据类型。
2.集合的框架结构
(1)collection集合框架
(2)map集合框架
collection中常用的方法有:add(增加)remove(移除) clear(全部清除)contains(包含 返回值为boolean)equals(判断内容是否相等) iteration(迭代器要是用while判断输出)size(返回collection中的元素数目) toarray(返回此collection中所有元素的数组)
//创建collection对象
Collection collection=new ArraryList();
//add增加
collection.add("张三");
collection.add("li4");
//remove 删除
collection.remove("li4");
//clear 清除
collection.clear();
//遍历两种方式 1.增强for 2.使用迭代器
collection.iter
sout;
iterator it=collection.iteration();
while(it.hasNest()){
object obj=it.next();
sout(obj);
}
泛型:可以声明在类中 方法中<标识符> 就是一个数据类型的占位符
泛型可以加一个规范,保证输入的是同一个类型。只要是一个合法的标识符即可,一般情况下只使用一个大写字母表示
泛型不能修饰静态属性和常量,可以声明数组但是不可以初始化数组
<?>表示任意的类型 <?extends T>表示T类或者T类的子类 <?super T>表示T类或者T类的父类
//创建泛型对象,元素类型string
collection<string> coll=new ArrayList<String>();
coll.add("周杰伦");
迭代器的使用:
方法名 | 含义 |
---|---|
hasNext() | 判断迭代器有下一个元素可以迭代 |
next() | 迭代下一个元素 |
remove() | 移除最后一个迭代元素 |
list 接口的存储特点:有序存储 可以相同,有独有的迭代器 listiterator可以反向遍历
list 接口:arraylist linkedlist
ArrayList存储结构是数组,linkedlist是双向链表。
ArrayList<string> list=new ArrayList<>(); list.add(" ")
LinkedList <string> linkedlist=new linkedlist<>(); linkedlist.add(" ") 有序存储,可以存储相同的元素 存储结构是双向链表。ArrayList适合查询遍历,不适合插入和删除 后者相反。
set接口
1.常用的方法:add( 添加) clear(清除) contains(包含)........常用方法和list一样。
2.存储的特点:无序的,不可以存相同的元素,不能通过下表访问。允许使用null元素
// Set<string> set=new HashSet<string>(); set.add("胖伦");
重写hashcode 和equals 可以实现排重的效果
listhashset:是有相对有序的set接口的哈希表和链表实现的 。是hashset的子类。 含list就是有序的,不可以存储相同的元素。
TreeSet :无序的,通过红黑树实现的集合,可以给元素进行重新排序。
Treeset除了实现set接口还实现了sortedset接口
first(返回set中当前的第一个最低元素),last(最后一个)
Map接口:是蒋健映射到值得对象,一个映射不能包含重复的健,每个键最多只能映射到一个值,值可以重复。
映射关系, jaychou----->周杰伦 jay------->周杰伦
常用的方法:clear(清除) entryset返回此映射中包含映射关系的set集合。 equals(指定值与映射是否相等) get(object key)
hashcode ,isempty,keyset,remove移除
map<string,string> map=new hashmap<>(); map.put("周杰伦","科比 ");
迭代器: iterator<string> set=map.keyset(); iterator<string> it=set.keyset(); while(it.hasnext()){string s=it.next(); sout s+"---"+map.getset*();}
map.entry方法:Set<map.entry<string,sstring>> set=map.entryset(){ iterator <map.entry<string,integer>>it =set.iteratpr; while().... }
相当于吧一个引用加入到key,一个整体变成了key,注意尖括号不要漏。
TreeMap
不能重复,重写comparable接口的compareto的方法返回值
Collections工具类
1.排序 collection.sort
2.反转 collection.reverse
3.打乱洗牌 static void shuffle(list<?>list)
4.获取集合中的最大最小值int n1=collection.max(list);
5.替换 collection.replaceall(list,5,1000);
6.统计指定元素在集合中出现的次数 int num=collection.frequency(list,2);
7.二分查找 collection.binarysearch(list,-10);
集合和数组的转换