首页
关于
Search
1
sql的注入原因和解决办法
138 阅读
2
SpringBoot整合腾讯云存储COS及基本使用,增删改查......
128 阅读
3
深究contains方法
100 阅读
4
多线程概述
74 阅读
5
学习的第一个注解@WebServlet - JavaWeb
73 阅读
默认分类
Java
C/C++
Mysql
JavaWeb
SpringBoot
算法
前端
Linux
Search
标签搜索
Spring
HTTP
Java
JavaWeb
IOC
mybatis
腾讯云
COS
云存储
CDN
redis
分布式
id
全局唯一id
Typecho
累计撰写
26
篇文章
累计收到
2
条评论
首页
栏目
默认分类
Java
C/C++
Mysql
JavaWeb
SpringBoot
算法
前端
Linux
页面
关于
搜索到
14
篇与
Java
的结果
2022-03-05
Collection集合里的迭代器
Collection集合的迭代器迭代器适合所有集合。常用的两个函数:boolean hasNext(); //判断集合里还有无元素。 next(); //这个方法让迭代器前进一位,并且将指向的元素返回。 void remove(); //删除当前元素一般这两个方法会一起使用,先hasNext()判断集合是否还有元素,然后next()拿到下一个元素。public static void main(String[] args) { //创建一个集合对象 Collection c = new ArrayList(); //添加数据 c.add("你好"); c.add("我叫阿冲"); c.add("很高兴认识你"); c.add("你叫什么名字?"); c.add(123); c.add("abc"); // 创建集合对象 Iterator it = c.iterator(); //循环判断,并取出。 while(it.hasNext()){ Object obj = it.next(); //这里用Object类型接收,因为集合里存储的对象类型可能不一样 System.out.println(obj); } }迭代集合原理该方法拿到一个迭代器,它负责遍历集合中的元素。it.hasNext(); 这个方法返回true,表示集合里还有元素可以迭代,若返回false,则表示没有更多的元素可以迭代了。it.next();表示拿到迭代器当前位置的下一个元素并返回。把集合想象成一个数组,迭代器像一个指向集合里元素的箭头。起初,迭代器指向的位置是在第一个元素的前一位。it.next()每拿一个元素,迭代器就前进一位Iterator it = c.iterator(); while(it.hasNext()){ Object obj = it.next(); //这里用Object接收,因为集合里存储的对象类型可能不一样 System.out.println(obj); }迭代器remove方法先说结论:如果集合的状态发生改变,对应迭代器必须重新获取。若集合的状态改变了,但是迭代器没有更新,此时还用旧的迭代器输出数据,就会发生异常。例如以下代码: 在拿到迭代器后,又往集合里添加一个新数据,此时下面的循环遍历就会报异常 ConcurrentModificationExceptionCollection c = new ArrayList(); c.add(123); c.add(234); c.add(234); Iterator it = c.iterator(); c.add(1122); while (it.hasNext()){ Object o = it.next(); System.out.println(o); }迭代器的原理: 在执行语句Iterator it = c.iterator();的时候,相对于把 c 集合里的数据复制了一份出来保存到 it 里。在使用点带起的时候,系统会时刻检查 c集合 和 it迭代器的内容是否一致 。 所以,往集合添加和删除元素的时候,需要及时更新迭代器;在迭代的过程中需要删除元素,必须使用迭代器的remove方法,而不是集合的remove方法。
2022年03月05日
51 阅读
0 评论
0 点赞
2022-03-05
Collection接口里的常用方法
Collection接口的常用方法Collection是接口,以下使用该接口的实现类来测试该接口里的方法。下面只是列举了一些常用的方法。Collection中能存放什么元素? 没有使用”泛型“之前,Collection可以存储Object的所有子类型。使用”泛型“之后,Collection只能存储某个数据类型。 集合中不能直接存储数据类型,也不能存储java对象,只是 存储java对象的内存地址。 常用方法 //往集合里添加元素。boolean add(Object e); //获取集合中元素个数。 int size(); //清空集合。 void clear(); //判断集合是否包含某元素。 boolean contains(); //删除集合中某个元素 boolean remove(Object o; //判断该集合中元素个数是否为0,即是否为空。 boolean isEmpty(); //把集合转换成数组。Object[] toArray();
2022年03月05日
61 阅读
0 评论
0 点赞
2022-03-05
多线程概述
多线程什么是进程?什么是线程?进程是一个运行中的应用程序。线程时进程中的执行场景/执行单元一个进程可以启动多个线程进程之间的内存独立不共享QQ是一个进程,微信是一个进程,这两个进程时独立的,不共享资源线程之间线程A和线程B,堆方法和方法区内存共享,但是栈内存独立,一个线程一个栈假设启动10个线程,就会有10个栈空间,每个栈和每个栈之间互不干扰,各自执行各自的,这就是多线程并发假设进程是一个火车站,那每一个售票窗口就是一个线程,每个窗口之间的可以同时售票。所以多线程并发可以提高效率。线程的生命周期注意:使用了多线程机制后,main方法结束,程序也不会结束。mian方法结束只是主线程结束了,主栈空了,其他栈可能还在运行(压栈弹栈)
2022年03月05日
74 阅读
0 评论
0 点赞
2022-03-05
集合继承结构图
集合结构Collection- CollectionListList集合存储特点,元素有序可重复,存储的元素有下标。ArrayListArrayList集合底层采用了数组这种数据结构。ArrayList集合是非线程安全的。LinkListLinkList集合底层采用了双向链表数据结构VectorVector集合也是采用双向链表的数据结构,但它是线程安全的。Vector所有的方法都有synchronized关键字修饰,所以线程安全,但是效率较低。选择保证线程安全有别的办法,故Vector使用较少了。SetSet集合存储特点:元素无序不可重复。HashSet实际上HashSet集合在new的时候,底层实际上new了一个HashMap集合。向HashSet中存储元素,实际上是存储在HashMap集合中。HashMap集合是一个哈希表数据结构。TreeSetSet实现了SortedSet接口,TreeSet是一个实现类。TreeSet底层实际上是TreeMap,new TreeSet的时候,实际上是new了一个TreeMap集合。往TreeSet中存储数据的时候,实际上是将数据放到TreeMap集合中了。-TreeMap集合底层采用了二叉树结构。MapMap集合与Collection集合没有关系。Map集合以key和value的这种键对值的方式存储元素。key和value都是存储java对象的内存地址。 -所有Map集合的key特点:无序不可重复的。Map集合的key和Set集合的存储元素特点相同。HashMap:-HashMap集合底层是哈希表数据结构,是非线程安全的。Hashteble-Hashtable集合底层也是哈希表数据结构,是线程安全的,其中所有的方法都带有synchronized关键字,但效率较低,现在使用少了,因为控制线程安全有其他更好的方案。 -Properties -Properties是线程安全的,因为继承Hashtable,另外Properties存储元素的时候也是采用key和value的形式存储,并且key和value支支持String类型,不支持其他类型。 -Properties被称为属性类TreeMap <interface> SortedSetTreeMap集合底层的数据结构是一个二叉树。
2022年03月05日
40 阅读
0 评论
1 点赞
1
2
3