网站设计苏州,成都美食网站设计论文,海宁网站制作,营销网站建设软件下载1.单列集合
1.1基础概要
集合中存储的是对象的地址信息#xff0c;想要输出对象的信息#xff0c;需要在具体的类中重写toString#xff08;#xff09;方法 Collection代表单列集合#xff0c;每个元素数据只包含一个值 List集合#xff1a;添加的元素可以是有序、可…1.单列集合
1.1基础概要
集合中存储的是对象的地址信息想要输出对象的信息需要在具体的类中重写toString方法 Collection代表单列集合每个元素数据只包含一个值 List集合添加的元素可以是有序、可重复、有索引ArrayList,LinkedList,有序可重复有索引 Set集合添加的元素无序不重复无索引 HashSet,无序不重复无索引。 LinkedHashSet,有序不重复无索引 TreeSet:按照大小默认升序不重复无索引 CollectionE接口的方法能被所有单列集合所调用详细信息参考java开发文档
CollectionString listnew ArrayList();//多态
Object[] listlist.toArray();将数组集合转为对象数组
#如果想要转换为其他类型的数组
//将数组集合转换为字符串数组前提是集合里面都是字符串数据
list.toArray(new String[list.size()]);1.2 Collection的遍历方式
迭代器 Collection集合获取迭代器的方法 IteratorE iterator(),返回集合中的迭代器对象迭代器对象默认指向当前集合的第一个元素
#iterator()
//获取迭代器对象
CollectionString listnew ArrayList();
IteratorStringlist.iterator();//迭代器对象会存储和集合一样的数据类型
//迭代器遍历集合
#boolean hasNext(),该方法用于返回迭代器中是否还有下一位用于判断取元素越界
#E next()获取当前位置的元素同时将迭代器指向下一位元素
while(list.hasNext)
{System.out.print(list.next());
}实现思路集合调用iterator()方法获取迭代器对象然后通过迭代器内置方法遍历数据
增强for
//可以遍历数组也可以遍历集合
CollectionString listnew ArrayList();
for(String s:list)
{
System.out.print(s)
}lambda表达式
CollectionString listnew ArrayList();
list.forEach(s-{System.out.print(s)})1.3 List集合
特点及方法
ListString listnew ArrayList();
ListString listnew LinkedList();遍历 1.for循环 2.迭代器 3.增强for循环 4.Lambda表达式
ArrayList 基于数组实现 特点
通过索引查询数据查询速度较快删除效率较低删除某个数据时需要将数据整体前移添加效率低在某个索引位置添加时需要将数据整体后移或者需要对数组扩容利用无参构造创建集合底层会默认创建一个容量为10的数组用作数组集合当数据存满10个时会扩容1.5倍
LinkedList 特点 链表中的节点是独立的对象在内存中是不连续的 查询较慢需要从头开始查找 链表增删相对较快不需要移动元素位置 LinkedList基于双链表实现的双向链表即分别存储前节点和后节点对于首尾元素增删改查的速度极快 双链表的方法 LinkedList的使用场景 1.设计队列 队列频繁操作对头和队尾元素且队列是有序的 LinkedListString queuenew LinkedList();
#进队队尾进队
queue.addLast(一号);
queue.addLast(二号);
queue.addLast(三号);
#出队对头出队
queue.removeFirst();
queue.removeFirst();2.设计栈 LinkedListString stacknew LinkedList();
//进栈
stack.addFirst(第一颗);
stack.addFirst(第二颗);
stack.addFirst(第三颗);
//出栈
stack.removeFirst();1.4 Set集合 hashset 特点无序不重复无索引 哈希值一个int类型的数值java中的每个对象都有一个哈希值 哈希值的获取 public int hashCode();返回值就是哈希码该方法由Objeact类提供 同一个对象调用hashcode方法获取的哈希值是一样的 不同对象哈希值一般不同也有可能相同int数值类型表示的范围-21亿~~21亿
hashset集合是基于哈希表实现的哈希表是一种增删改查数据性能都较好的数据结构 实现原理 1.创建一个长度默认为16的数组默认加载因子0.75 即当哈希表存储到16*0.7512时就需要进行扩容 jdk8之后当链表的长度8数组长度64,自动将链表转为红黑树 红黑树
2.获取具体对象的哈希值 3.对哈希值按数组长度进行取余操作 4.在取余操作后在数组下标等于余数位进行存值5.如果多个对象在同一个下标位置则当前下标位存储方式改为链表存储在存储前需要对元素逐个进行判断一样的就不保存
LinkedSet 特点有序、不重复、无索引
有序的实现是通过使用双链表机制无序从下标0开始找如果某个下标中有链表元素则就必须先将该链表元素找完后再找其他下标的元素引入双链表后Linkedset集合为有序
TreeSet 特点排序(默认升序)不重复无索引 排序是基于红黑树实现的
对于Integer\Double类型默认按照数值本身排序对于字符串默认按照首字符的编号排序对于自定义对象需要自定义排序方法如下 总结有序、有索引、可重复且频繁的根据索引查找数据—ArrayList底层基于数组实现有序、可重复、有索引且增删首位数据频率较多—LinkedList底层基于双链表实现无序、不重复、无索引增删改查都快—HashSet底层基于哈希表实现有序、不重复、无索引—LinkedHashSet底层基于双链表实现排序、不重复、无索引—TreeSet,底层基于红黑树实现
遍历删除时发生异常
#集合遍历根据条件删除没有完全删除的解决方案
//for循环
public static void test5(){ListPerson peoplenew ArrayList();//多态people.add(0,new Person(赵立秋,24,男));people.add(1,new Person(张立秋,22,男));people.add(2,new Person(赵立春,18,男));for (int i people.size()-1; i0 ; i--) {Person person people.get(i);if (person.getName().contains(秋)){people.remove(person);}}System.out.println(people);}
//迭代器遍历IteratorPerson iterator people.iterator();while (iterator.hasNext()){Person next iterator.next();if (next.getName().contains(秋)){iterator.remove(); //底层的逻辑就是i--}}System.out.println(people);}1.5 Collectoion的其他知识
可变参数 即可选择传参也可选择不传参 特点 1.一个形参列表中只能有一个可变参数 2.可变参数必须放在形参列表的最后 3.可变参数在方法内部就是一个数组
public static void test(int age,int...nums)//...nums就是可变形参Collections 不是Collection集合而是一种操作集合的工具类 使用上述中的sort方法如果参数中的集合是类对象想要进行排序就必须在该类实现Comparable接口指定比较规则
2.双列集合
map代表双列集合每个元素包含两个值键值对 map集合中键不能重复值可以 应用场景一 一对应 Map集合的特点
HashMap:无序、不重复键相同时后者覆盖前者、无索引LinkedHashMap:有序键决定、不重复、无索引TreeMap:按照大小默认升序排序(键决定)无索引不重复
map集合的遍历方式 1.entryset的方式进行遍历
//双列转单列集合将键值对转换成一个整体对象通过增强for遍历
MapString,String mapnew HashMap();
SetMap.EntryString,String entrymap.entrySet();
for(Map.EntryString,String en:entry)
{
en.getKey();
en.getValue();
}2.Lambda表达式遍历map集合jdk8版本后可用
map.forEach((k,v)-
{
System.out.print(k---v);
}
);Map集合遍历案例
#Map集合模拟投票public static void test2(){ListString listnew ArrayList();String [] str{A风景区,B田园,C公园,D王府井,E万达广场};Random randomnew Random();for (int i 1; i 35; i) {int index random.nextInt(5);list.add(str[index]);}MapString,Integer scenerynew HashMap();for (String i:list) {if (scenery.containsKey(i)){scenery.put(i,scenery.get(i)1);}else{scenery.put(i,1);}}System.out.println(scenery);}HashMap底层原理
HashMap和HashSet的底层原理一样都是基于哈希表完成的JDK8之前哈希表数组链表JDK8之后哈希表数组链表红黑树哈希表是一个增删改查数据性能都比较好的数据结构HashMap的存储原理是用键的哈希值取余确定存储位置的
HashMap实现键值唯一
如果键不是一个自定义类则函数发现键值重复的时候后者会覆盖前者如果键是一个自定义的类那么就需要在该类中重写equals和hashcode的方法
LinkedHashMap底层原理
底层是基于哈希表实现的吗每个键值对元素采用双链表机制存储有序、不重复、无索引
TreeMap
排序不重复无索引根据键值排序如果键值是一个类 1.通过在该类中实现Comparable接口重写compareTo()方法 2.在TreeMap的构造方法中创建比较器
集合嵌套 public static void test4(){ListString citynew ArrayList();Collections.addAll(city,南充,成都,攀枝花,达州);MapString,ListString mapnew HashMap();map.put(四川,city);System.out.println(map);//{四川[南充, 成都, 攀枝花, 达州]}} 文章转载自: http://www.morning.qytby.cn.gov.cn.qytby.cn http://www.morning.yfzld.cn.gov.cn.yfzld.cn http://www.morning.rtjhw.cn.gov.cn.rtjhw.cn http://www.morning.qnsmk.cn.gov.cn.qnsmk.cn http://www.morning.ksqyj.cn.gov.cn.ksqyj.cn http://www.morning.npmcf.cn.gov.cn.npmcf.cn http://www.morning.nkddq.cn.gov.cn.nkddq.cn http://www.morning.ldcsw.cn.gov.cn.ldcsw.cn http://www.morning.zrgsg.cn.gov.cn.zrgsg.cn http://www.morning.lzqxb.cn.gov.cn.lzqxb.cn http://www.morning.nmbbt.cn.gov.cn.nmbbt.cn http://www.morning.wnmdt.cn.gov.cn.wnmdt.cn http://www.morning.qzqfq.cn.gov.cn.qzqfq.cn http://www.morning.bchgl.cn.gov.cn.bchgl.cn http://www.morning.xmhpq.cn.gov.cn.xmhpq.cn http://www.morning.bdzps.cn.gov.cn.bdzps.cn http://www.morning.dhdzz.cn.gov.cn.dhdzz.cn http://www.morning.kwwkm.cn.gov.cn.kwwkm.cn http://www.morning.yxlhz.cn.gov.cn.yxlhz.cn http://www.morning.cpwmj.cn.gov.cn.cpwmj.cn http://www.morning.rkmsm.cn.gov.cn.rkmsm.cn http://www.morning.rgpy.cn.gov.cn.rgpy.cn http://www.morning.qgtfl.cn.gov.cn.qgtfl.cn http://www.morning.hfxks.cn.gov.cn.hfxks.cn http://www.morning.xfrqf.cn.gov.cn.xfrqf.cn http://www.morning.dmwck.cn.gov.cn.dmwck.cn http://www.morning.tzkrh.cn.gov.cn.tzkrh.cn http://www.morning.ylljn.cn.gov.cn.ylljn.cn http://www.morning.hlzpb.cn.gov.cn.hlzpb.cn http://www.morning.c7512.cn.gov.cn.c7512.cn http://www.morning.grbgn.cn.gov.cn.grbgn.cn http://www.morning.xbbrh.cn.gov.cn.xbbrh.cn http://www.morning.cnyqj.cn.gov.cn.cnyqj.cn http://www.morning.qsy40.cn.gov.cn.qsy40.cn http://www.morning.zjcmr.cn.gov.cn.zjcmr.cn http://www.morning.pdmml.cn.gov.cn.pdmml.cn http://www.morning.jfsbs.cn.gov.cn.jfsbs.cn http://www.morning.thbnt.cn.gov.cn.thbnt.cn http://www.morning.kzrbd.cn.gov.cn.kzrbd.cn http://www.morning.cwwts.cn.gov.cn.cwwts.cn http://www.morning.ntnml.cn.gov.cn.ntnml.cn http://www.morning.lbbyx.cn.gov.cn.lbbyx.cn http://www.morning.mlhfr.cn.gov.cn.mlhfr.cn http://www.morning.tqpr.cn.gov.cn.tqpr.cn http://www.morning.xxsrm.cn.gov.cn.xxsrm.cn http://www.morning.eviap.com.gov.cn.eviap.com http://www.morning.dfbeer.com.gov.cn.dfbeer.com http://www.morning.tfwr.cn.gov.cn.tfwr.cn http://www.morning.wmgjq.cn.gov.cn.wmgjq.cn http://www.morning.yhpl.cn.gov.cn.yhpl.cn http://www.morning.pmjw.cn.gov.cn.pmjw.cn http://www.morning.jxjrm.cn.gov.cn.jxjrm.cn http://www.morning.jbshh.cn.gov.cn.jbshh.cn http://www.morning.clfct.cn.gov.cn.clfct.cn http://www.morning.zlxkp.cn.gov.cn.zlxkp.cn http://www.morning.dnqpq.cn.gov.cn.dnqpq.cn http://www.morning.jxpwr.cn.gov.cn.jxpwr.cn http://www.morning.trmpj.cn.gov.cn.trmpj.cn http://www.morning.rtkz.cn.gov.cn.rtkz.cn http://www.morning.dangaw.com.gov.cn.dangaw.com http://www.morning.mkpqr.cn.gov.cn.mkpqr.cn http://www.morning.btpzn.cn.gov.cn.btpzn.cn http://www.morning.wwxg.cn.gov.cn.wwxg.cn http://www.morning.xppj.cn.gov.cn.xppj.cn http://www.morning.pxspq.cn.gov.cn.pxspq.cn http://www.morning.dqkrf.cn.gov.cn.dqkrf.cn http://www.morning.rbnj.cn.gov.cn.rbnj.cn http://www.morning.ncfky.cn.gov.cn.ncfky.cn http://www.morning.jcffp.cn.gov.cn.jcffp.cn http://www.morning.jpydf.cn.gov.cn.jpydf.cn http://www.morning.ggjlm.cn.gov.cn.ggjlm.cn http://www.morning.fqljq.cn.gov.cn.fqljq.cn http://www.morning.gtdf.cn.gov.cn.gtdf.cn http://www.morning.zrwlz.cn.gov.cn.zrwlz.cn http://www.morning.sfdsn.cn.gov.cn.sfdsn.cn http://www.morning.ncrk.cn.gov.cn.ncrk.cn http://www.morning.mttqp.cn.gov.cn.mttqp.cn http://www.morning.qrzqd.cn.gov.cn.qrzqd.cn http://www.morning.pphbn.cn.gov.cn.pphbn.cn http://www.morning.hilmwmu.cn.gov.cn.hilmwmu.cn