java笔记02(集合)
来源:互联网 发布:excel表格数据连接 编辑:程序博客网 时间:2024/05/21 11:37
1、集合类:java.util
集合用于存储对象,长度可变,可以存储不同类型的对象;
数组也存储对象,但是数组是固定长度的,数组只能存同一种类型;
2、为什么会出现这么多的容器呢?
因为每一个容器对数据的存储方式都有不同,这个存储方式称为:数据结构
3、迭代器:用于遍历集合中的元素
Iterator tt = al.itrator();//这个tt就好比是al集合的一个游标while(tt.hasNext()) { S.o.p(it.next());}
4、List特有方法,凡是可以操作角标的方法都是该体系特有的方法
增:
add(index,element); addAll(index,Collection);删:
remove(index);修改:
set(index,element);查:
get(index);
subList(from to);
ListIterator();通过indexOf获取对象的位置
sop(al.indexOf(“java02”));在迭代时,不可以通过集合对象的方法操作集合中的元素,因为会发生并发异常
5 ListItrator
是List集合特有的迭代器,是Iterator的子接口,在迭代时,只能用迭代器的方法操作集合中的元素,可以在遍历过程中增删改查;
6 Set
元素是无序的(存入和取出可能不一致),不可以重复,存入的时候是按照哈希码的大小顺序存入
一般的,描述的事物需要存入hashSet时,就需要重写hashCode和equals方法;
7 hashSet是如何保证元素的唯一性呢?
是通过元素的两个方法,hashCode和equals来完成,如果元素的hashCode值相同,才会判断equals是否为true,如果元素的hashCode值不同,不会调用equals;
注意:对于判断元素是否存在,以及删除等操作,依赖的方法是元素的hashCode和equals方法;
8 TreeSet
可以对集合中的元素进行排序,但是往集合中添加自定义对象时,必须实现Comparable接口,重写compareTo方法;采用的是二叉树数据结构
TreeSet保证元素唯一性的依据是:compareTo方法return 0;
1:大于;-1:小于; 0:等于,大于放右边,小于放左边,等于不放
往TreeSet中添加自定义的对象时,由于TreeSet中有自然顺序对添加的对象进行排序,如果没有实现Comparable接口并实现compareTo方法,会出现classCastException:类型转换异常
9 泛型:
ArrayList al = new ArrayList<>(); al里面只能存储字符串对象;
10 泛型好处:
- 将运行时期出现的问题ClassCastException,转移到编译时期,方便与程序员解决问题,安全
- 避免了强制转换
11 泛型在集合中很常见
什么时候定义泛型类:当类中要操作的引用数据类型不确定的时候,早期定义Object来完成,现在定义泛型来扩展
//泛型类:class Demo<T> { public void show(T t) {sop(t);} public void print(T t) {sop(t);}}main() { Demo<String> d = new Demo<String>(); //此后d调用方法传递的参数必须是String类型!!已经固定下来}//泛型方法:为了让d调用方法时,传递不同类型的参数,就定义泛型方法class Demo { public <T> void show(T t) {sop(t);} public <Q> void prit(Q q) {sop(q);}} main() { Demo d = new Demo(); d.show("haha"); d.prit(2); //此时,d调用的方法传递的参数可以是各种类型}
12 泛型限定:
能传的参数为Person类以其子类
public void dayin(ArrayList<? extends Person> a;) { Iterator<? extends Person> tt = al.iterator(); .....}
? extends E :可以接受E类及其子类
? super E :可以接受E类及其父类
13 Map集合
和Collection并列,该集合存储键值对,一对一对往里存,而且要保证键的唯一性;
Map
|–Hashtable:哈希表数据结构,不可以存null键null值,线程同步
|–HashMap :哈希表数据结构,允许null键null值,不同步
|–TreeMap :二叉树数据结构,不同步,可以用于给键进行排序Map
Set<Map.Entry<Integer, String>> ss = map.entrySet();Iterator<Map.Entry<Integer, String>> tt = ss.iterator(); while(tt.hasNext()) { Map.Entry<Integer, String> me = tt.next(); System.out.println(me.getKey() +" : "+me.getValue());}
将map集合中的映射关系取出存入到Set集合中,集合中的元素是映射关系,这一个个的映射关系就是Map.Entry对象,获取到该对象后,就可以通过Map.Entry中的getKey个getValue方法获取键和值
Collection values();获取该Map所有的value存到Collection集合中
Collection coll = map.values;Set keySet() ;获取该Map所有的Key存到Set集合中
Set ss = map.keySet();
15 Collections
专门用于对集合进行操作的工具类,里面都是static方法
List li = new ArrayList();Collections.sort(li);//给li集合排序Collections.Max(li);//返回最后一个元素Collections.binarySearch(li,"aaa"); //返回aaa的角标Collections.fill(li,"pp");//将li集合中所有的元素都替换成ppCollections.replaceAll(li,oldVal,newVal);//用新值替换旧值Collections.reverse(li); //反转指定列表中元素的顺序reverseOrder(); //该方法返回一个Comparator子类对象,强行逆转自然顺序reverseOrder(Comparator cmp); //强行逆转指定比较器cmp的顺序
16 Arrays:
用于操作数组的工具类,也都是static方法
将数组变成List集合,Arrays类下的asList();
List li = Array.asList(arr);
把数组变成集合后,就可以使用集合的思想和方法来操作数组中的元素
比如 li.contains(“aaa”); 但是不可以使用集合的增删方法;如果数组中的元素都是对象,那么变成集合时,数组中的元素就直接转成集合中的元素;
如果数组中的元素都是基本数据类型,因为集合存储的都是对象,所以会将该数组作为集合中的元素存储
集合变数组:
Collection接口中的toArray方法。
Integer[] arr = al.toArray(new Integer[0]);
System.out.println(Arrays.toString(arr));
17 增强的for循环
只能用于遍历,不能对集合进行操作
ArrayList<String> al = new ArrayList<String>();...for(String s : al) { sop(s);}
增强for的局限性:必须要有被遍历的对象,比如不能打印hello 100次;
18 可变参数
注意,可变参数要定义在所有参数的最后面,以数组的形式传递
void show(String str, int ... arr) { sop(arr.length);}
- java笔记02(集合)
- JAVA集合类(笔记)
- Java学习笔记(集合)
- java笔记(集合框架)
- Java笔记 - 集合(Collections)
- Java笔记 - 集合(Arrays)
- java集合笔记(1):java集合类图
- Java学习笔记(十)--集合 List集合
- Java学习笔记(十一)--Set集合 Map集合
- 【我的Java笔记】Map集合(双列集合)
- JAVA笔记:集合系列02—ArrayList
- Java集合 知识点笔记(一)
- Java集合 知识点笔记(二)
- 【Java学习笔记】集合框架(一)
- java学习笔记(第六章集合)
- 笔记整理(java基础十----集合)
- Java笔记十一.集合类(二)
- Java学习笔记(六)集合类
- Java代理机制
- ACM之路
- 简易连接器对付建立数据库连接时的connection timeout
- 【p1086-花生采摘】解题记录
- CentOS 6.8 部署腾讯蓝鲸运维平台
- java笔记02(集合)
- IPC机制<二>AIDL
- 读取excel文件.xls格式 转为html格式在页面中显示
- 理解RESTful架构
- 制作手机端九宫格
- 第三章solrj客户端使用demo
- java基础知识(2)—一起加强加强java基础吧
- java解析Xml
- There are 0 datanode(s) running and no node(s) are excluded in this operation