java集合.docx
- 文档编号:28265627
- 上传时间:2023-07-09
- 格式:DOCX
- 页数:10
- 大小:17.19KB
java集合.docx
《java集合.docx》由会员分享,可在线阅读,更多相关《java集合.docx(10页珍藏版)》请在冰豆网上搜索。
java集合
packagecn.itcast.list;
importjava.util.HashSet;
importjavax.print.attribute.HashAttributeSet;
/*
集合:
存储对象数据的集合容器。
单例集合
----------|Collection单例集合的根接口
----------------|List如果是实现了List接口的集合类,具备的特点:
有序,可重复。
-------------------|ArrayListArrayList底层是使用了Object数组实现的。
特点:
查询速度快,增删慢。
-------------------|LinkedListLinkedList底层是使用了链表数据结构实现的。
特点:
查询速度慢,增删快
-------------------|Vector底层是使用了Object数组实现的,实现原理与ArrayList是一致的,但是是线程安全的,操作效率低。
----------------|Set如果是实现了Set接口的集合类,具备的特点:
无序,不可重复。
-------------------|HashSet底层是使用了哈希表实现的。
特点:
存取速度快。
HashSet存储元素的原理:
往hashSet添加元素的时候,首先会调用元素的hashCode方法得到元素的哈希码值,然后把哈希码值经过运算算出该元素存在哈希表中的位置。
情况1:
如果算出的位置目前还没有存在任何的元素,那么该元素可以直接添加到哈希表中。
情况2:
如果算出的位置目前已经存在其他的元素,那么还会调用元素的equals方法再与这个位置上的元素比较一次。
如果equals方法返回的是true,那么该元素被视为重复元素,不允许添加。
如果equals方法返回的是false,那么该元素也可以被添加。
------------------|TreeSet底层是使用了红黑树(二叉树)数据结构实现的。
特点:
对集合中的元素进行排序存储、。
TreeSet要注意的事项:
1.往TreeSet添加元素的时候,如果元素具备自然顺序的特点,那么TreeSet会根据元素的自然顺序特性进行排序存储。
2.往TreeSet添加元素的时候,如果元素不具备自然顺序的特点,那么元素所属的类就必须要实现Comparable接口,把比较的规则定义在CompareTo方法上。
3.往TreeSet添加元素的时候,如果元素不具备自然顺序的特点,那么元素所属的类就也没有实现Comparable接口,那么在创建TreeSet对象的时候必须要传入比较器对象。
比较器的定义格式:
class类名implementsComparator{
}
双列集合
----------|Map存储的数据都是以键值对的形式存在的,键可以不重复,值可重复。
-------------|HashMap底层也是使用了哈希表实现的。
-------------|TreeMap底层也是使用了红黑树数据结构实现的。
练习:
*/
classPerson{
intid;
Stringname;
publicPerson(intid,Stringname){
super();
this.id=id;
this.name=name;
}
@Override
publicinthashCode(){
returnthis.id;
}
@Override
publicbooleanequals(Objectobj){
Personp=(Person)obj;
returnthis.id==p.id;
}
@Override
publicStringtoString(){
return"编号:
"+this.id+"姓名:
"+this.name;
}
}
publicclassDemo1{
publicstaticvoidmain(String[]args){
HashSet
set.add(newPerson(110,"狗娃"));
set.add(newPerson(110,"狗娃"));
System.out.println("集合的元素:
"+set);
}
}
输出
集合的元素:
[编号:
110姓名:
狗娃]
遍历输出
Demo2
packagecn.itcast.list;
importjava.util.ArrayList;
importjava.util.HashMap;
importjava.util.HashSet;
importjava.util.Iterator;
importjava.util.Map.Entry;
importjava.util.Set;
publicclassDemo2{
publicstaticvoidmain(String[]args){
ArrayList
//使用get方法遍历。
list.add("张三");
list.add("李四");
list.add("王五");
System.out.println("======get方式遍历=========");
for(inti=0;i System.out.print(list.get(i)+","); } //使用迭代器注意: 迭代器在迭代的过程中不能使用集合对象修改集合中的元素个数。 如果需要修改要使用迭代器的方法进行修改, System.out.println("\r\n======迭代器方式遍历========="); HashSet set.add("狗娃"); set.add("狗剩"); set.add("铁蛋"); /*Iterator while(it.hasNext()){ System.out.print(it.next()+","); } */ for(Stringitem: set){ System.out.print(item+","); } System.out.println("\r\n======entrySet方式遍历========="); HashMap map.put("张三","001"); map.put("李四","002"); map.put("王五","003"); Set for(Entry entrys){ System.out.println("键: "+entry.getKey()+"值: "+entry.getValue()); } } } ======get方式遍历========= 张三,李四,王五, ======迭代器方式遍历========= 狗娃,铁蛋,狗剩, ======entrySet方式遍历========= 键: 李四值: 002 键: 张三值: 001 键: 王五值: 003 配置文件路径 packagecn.itcast.path; importjava.io.File; importjava.io.FileNotFoundException; importjava.io.FileReader; importjava.io.IOException; importjava.io.InputStream; importjava.util.Properties; /* 如果经常会发生变化的数据我们可以定义在配置文件上。 比如说: 数据库的用户名与密码。 配置文件的路径应该如何写呢? 绝对路径: 一个文件的完整路径信息。 一般绝对路径是包含有盘符的。 绝对路径的缺陷: 因为绝对路径是有盘符开头的,有些系统是没有盘符的。 相对路径: 相对路径是相对于当前程序的路径。 当前路径就是执行java命令的时候,控制台所在的路径。 类文件路径: 类文件路径就是使用了classpath的路径找对应的资源文件。 如果需要使用到类文件路径首先先要获取到一个Class对象。 */ publicclassDBUtil{ staticPropertiesproperties; static{ try{ properties=newProperties(); //去加载配置文件/ Classclazz=DBUtil.class; InputStreaminputStream=clazz.getResourceAsStream("/db.properties");//"/"代表了Classpath的路径。 getResourceAsStream该方法里面使用的路径就是使用了类文件路径。 properties.load(inputStream); }catch(IOExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } } publicstaticvoidmain(String[]args){ System.out.println("当前路径: "+newFile(".").getAbsolutePath()); System.out.println("用户名: "+properties.getProperty("userName")+"密码: "+properties.getProperty("password")); } } 硬编码 packagecn.itcast.path; /* 以后的数据库的用户名与密码一般都会保存到properties(配置文件) */ publicclassDemo1{ //硬编码 staticStringuserName="root"; staticStringpassword="123"; publicstaticvoidmain(String[]args){ System.out.println("用户名: "+userName+"密码: "+password); } } 输出 用户名: root密码: 123
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 集合
![提示](https://static.bdocx.com/images/bang_tan.gif)