一直以为是数据库的数据取错了,导致后面for循环出错.慢慢调试之后,发现这原来是一个坑.回到正题 (错误示范:使用for循环删除list集合) for(int i=0;i<list.size();i++) { if(list.get(i)!=0) { list.remove(i); } } 错误的原因是每删除list集合的一个元素,list的大小都在发生改变,从而导致索引也在发生改变,从而删除的时候会漏过一些元素. (正确示范:使用迭代器删除list集合) Iterator<Integer&g…
  作者:CHAITANYA SINGH 来源:https://www.koofun.com/pro/kfpostsdetail?kfpostsid=21 循环用于反复执行同一组语句,直到满足特定条件为止.在Java中,我们有三种类型的基本循环:for.while和do-while.在本教程中,我们将学习如何在Java中使用for循环(for loop). for循环的语法: 1 2 3 4 for(初始化initialization; 循环条件condition; 递增/递减increment…
作者:CHAITANYA SINGH 来源:https://www.koofun.com/pro/kfpostsdetail?kfpostsid=22&cid=0 在上一篇教程中,我们讨论了while循环.在本教程中,我们将讨论java中的do-while循环.do-while循环类似于while循环,但是它们之间有一个区别:在while循环中,循环条件在循环的主体执行之前进行评估,而在do-while循环中,循环条件在循环的主体执行之后再进行评估. do-while循环的语法: 1 2 3 4…
java中的for循环 https://baijiahao.baidu.com/s?id=1621622990642364099&wfr=spider&for=pc 发现自己连 for 循环的 执行方式都忘记了.. 学习难 但是忘东西太容易了.. 夜明说编程 发布时间:01-0315:23 关于java的for循环想必大家已经有所了解了,for循环是学习java常用的语句之一.for语句是最灵活也是最常用的循环结构.它的结构是这样的,大家可以看图.这就是for循环的基本结构. for语句的…
JAVA中循环遍历list有三种方式for循环.增强for循环(也就是常说的foreach循环).iterator遍历. 1.for循环遍历list for(int i=0;i<list.size();i++){ if(list.get(i).equals("del")) list.remove(i); } 这种方式的问题在于,删除某个元素后,list的大小发生了变化,而你的索引也在变化,所以会导致你在遍历的时候漏掉某些元素.比如当你删除第1个元素后,继续根据索引访问第2个元素时…
在工作中的许多场景下,我们都会使用到List这个数据结构,那么同样的有很多场景下需要删除List中的某一个元素或某几个元素,那么我们该如何正确无误地删除List中的元素的,今天我来教大家三种方式. 前提知识准备 for循环的执行顺序 这里借用百度百科的一张图,简明扼要的介绍一下. Iterator迭代器介绍 迭代器:迭代其实我们可以简单地理解为遍历,是一个标准化遍历各类容器里面的所有对象的方法类,它是一个很典型的设计模式.Iterator 模式是用于遍历集合类的标准访问方法.它可以把访问逻辑从不…
之前在使用list集合循环删除元素的时候,竟然出现了集合内的元素不能删除成功的问题,之后整理了一下,发现大有玄机! 1.如果指定了list的size大小,会出现下标越界异常 List<String> list=new ArrayList<>();list.add("a");list.add("b");list.add("c");list.add("d");list.add("e");…
在学习java中的collection时注意到,collection层次的根接口Collection实现了Iterable<T>接口(位于java.lang包中),实现这个接口允许对象成为 "foreach" 语句的目标,而此接口中的唯一方法,实现的就是返回一个在一组 T 类型的元素上进行迭代的迭代器. 一.迭代器Iterator 接口:Iterator<T> public interface Iterator<E>{ boolean hasNext…
HashMap的遍历 方法一.这是最常见的并且在大多数情况下也是最可取的遍历方式 /** * 在键值都需要时使用 */ Map<Integer, Integer> map = new HashMap<Integer, Integer>(); for (Map.Entry<Integer, Integer> entry : map.entrySet()) { System.out.println("Key = " + entry.getKey() +…
数组和链表 数组:所谓数组就是相同数据类型的元素按照一定顺序排列的集合. 它的存储区间是连续的,占用内存严重,所以空间复杂度很大,为o(n),但是数组的二分查找时间复杂度很小为o(1). 特点是大小固定,不可变,在同一个数组中只能存放同一个类型的数据,寻址容易,插入和删除困难. 链表:所谓链表就是一种物理存储单元上非连续的,非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针实现的.链表是由一系列节点(链表中每个元素称为节点)组成的,节点是可以动态生成的.每个节点包括两部分:一个是存储数据元素…
1 java中的length属性是针对数组说的,比如说你声明了一个数组,想知道这个数组的长度则用到了length这个属性. 2 java中的length()方法是针对字符串String说的,如果想看这个字符串的长度则用到length()这个方法. 3.java中的size()方法是针对泛型集合说的,如果想看这个泛型有多少个元素,就调用此方法来查看…
此方法在jdk1.5之后才出现. 1:遍历数组 语法: for (Type value : array) { expression value; } 例子: void Sum() { int[] array = {1,2,5,8,9}; int sum= 0; for (int n : array) { sum+= n; } 缺点:   对于数组,难以访问下标值: 2:遍历集合 语法: for (Type value : Iterable) { expression value; } 例子: v…
在项目的开发过程中,一定少不了的是对Java集合中的List接触.项目中对List的删掉也是一种常见的操作,看上这个操作也没什么好说的样子,但是在项目开发中也是最容易出错的地方,特别是对于新手.有时候,我们在开发的时候不注意也会踩进这个坑. 下面的代码看上去好像问题,但是运行报IndexOutOfBoundsException. 看控制台输出的打印出来的信息,我们知道List的Size发生了变化,但是Index的没有改变,当Index起出Size的大小时,就报IndexOutOfBoundsEx…
foreach语句是java5的新特征之一,在遍历数组.集合方面,foreach为开发人员提供了极大的方便. foreach语句是for语句的特殊简化版本,但是foreach语句并不能完全取代for语句,然而,任何的foreach语句都可以改写为for语句版本. foreach并不是一个关键字,习惯上将这种特殊的for语句格式称之为“foreach”语句.从英文字面意思理解foreach也就是“for 每一个”的意思.实际上也就是这个意思. foreach的语句格式: for(元素类型t 元素变…
该问题有两种方法: 一 利用两个数组,此法简单,不讨论 二 利用一个数组,从第0个开始依次取元素,并在其后元素中查找是否有该元素,有则删掉后面的重复元素,依次遍历.---但是这种情况要特别注意,当后续元素中有连续的重复元素时,如不加上y--使y(待比较的后续元素)回退一个,很可能会因为我们删掉当前重复元素y后其后的连续重复元素顶上,导致忽略掉顶上的重复元素. 代码如下: public static void main(String[] args) { ArrayList array=new Ar…
1:switch语句 (1)格式: switch(表达式) { case 值1: 语句体1; break; case 值2: 语句体2; break; ... default: 语句体n+1; break; } 格式解释说明: switch:说明这是switch语句. 表达式:可以是byte,short,int,char JDK5以后可以是枚举 JDK7以后可以是字符串 case:后面的值就是要和表达式进行比较的值 break:表示程序到这里中断,跳出switch语句 default:如果所有的…
在Java程序中,要“逐一处理”――或者说,“遍历”――某一个数组或Collection中的元素的时候,一般会使用一个for循环来实现(当 然,用其它种类的循环也不是不可以,只是不知道是因为for这个词的长度比较短,还是因为for这个词的含义和这种操作比较配,在这种时候for循环比其 它循环常用得多). 对于遍历数组,这个循环一般是采取这样的写法: 遍历数组的传统方式: public void addIterator(){ List<String> list = new ArrayList&l…
删除工具类: import java.io.File; public class DeleteAll{ public static void deleteAll(File file){ if(file.isFile() || file.list().length ==0){ file.delete(); }else{ File[] files = file.listFiles(); for (int i = 0; i < files.length; i++) { deleteAll(files[…
那么在讲解循环之前呢我们先来了解一下什么是循环   生活中的例子 车子的轮胎他就是一直在循环 马拉松跑到也是在循环 因为运动员不停的一圈一圈在跑这也是一个循环 那么我们为什么要学习循环呢? 下面看一个小问题  张浩Java考试成绩未达到自己的目标.为了表明自己勤奋学习的决心,他决定在程序中写一百遍“好好学习,天天向上!”打印出来,效果如图所示 可以看到张浩打印了100遍System.out.print("好好学习天天向上");写了好久非常麻烦如如果我们写一万遍你 那么有没有更简单的方法…
循环的两种应用:穷举和迭代. break跳出整个循环 一.穷举:将所有可能的情况都走一遍,用if筛选出符合条件. 百鸡百钱: 一只公鸡1文钱,一只母鸡2文钱,一只小鸡半文钱,需要买100只鸡, 正好花完,可以怎么买?有多少种买法? int ff = 0; for(int g=0;g<=100;g++) { for(int m=0;m<=50;m++) { for(int x=0;x<=200;x++) { if(g+m+x==100 && g+2*m+0.5*x==100…
摘自 : http://blog.sina.com.cn/s/blog_79333b2c0100xiu4.html import java.io.File; public class FileTest {  //递归删除指定路径下的所有文件  public static void deleteAll(File file)  {   if(file.isFile() || file.list().length == 0)   {    file.delete(); }   else   {    …
介绍: 你用你手中的钥匙打开一扇门,结果去发现前方还有一扇门,紧接着你又用钥匙打开了这扇门,然后你又看到一扇门......但是当你开到一扇门时,发现前方是一堵墙无路可走了,你选择原路返回--这就是递归. 但是如果你打开一扇门后,同样发现前方也有一扇门,紧接着你又打开下一扇门.....但是却一直没有碰到尽头--这就是循环. 简单来说:循环是有去无回,而递归是有去有回(因为存在终止条件). 循环:当满足某一条件时反复执行某一操作(循环体). 递归:在一个方法内部对自身进行调用的方法. 递归结构包括两…
作者:CHAITANYA SINGH 来源:https://www.koofun.com/pro/kfpostsdetail?kfpostsid=20 在上一个教程中,我们讨论了for循环的用法.在本教程中,我们将讨论while循环的用法.如前一个教程中所讨论的,循环用于重复执行同一组语句,直到某个特定条件满足后,程序就跳出这个循环. while循环的语法: 1 2 3 4 while(condition) {    statement(s); } while循环是如何工作的? 在while循环…
作者:CHAITANYA SINGH 来源:https://www.koofun.com//pro/kfpostsdetail?kfpostsid=24 break语句通常用于以下两种情况: (A)使用break语句的目的是让程序从循环中立即跳出来.每当程序在执行循环中遇到break语句时,就会直接从循环中跳出来,该循环也就中止了.break语句通常与if语句合在一起使用,在循环的代码块里面,当某个特定条件满足时,程序就跳出这个循环. 注意:在一个嵌套循环语句里面,如果break语句是在最里面的…
01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public static void main(String[] args) { int sum = 0; // 保存总和 // 设置循环初始化条件current,同时此变量作为累加操作使用 // 每次执行循环体前都要进行循环判断(current <= 100) // 循环体执行完毕后会自动执行“current…
这是一块非常简单的Java代码片段: public class HelloWorld{ public static void main(String []args){ int product = 1; for (int i = 10; i <= 99; i++) { product *= i; } System.out.println(product); } } 为什么得出的结果是0呢? 问题现象 蛋疼的同学可能会发现这个程序执行的规律: 1 * 10 = 10 10 * 11 = 110 11…
1.首先判断外层,A .B.C.D都符合条件 2.那么再看内层 A :int i=0;i<5;i++ 当i=1时;带入到第二个内层循环中 int j=0;j<Math.abs(i)*2+1;j++ 这是第一行最多只能打印出三个*来;不正确 B int i=4;i>=0;i++ 当i=4时;带入到第一个内层循环中 int k=0; k<=2-Math.abs(4):k++ 显然条件不成立 C:int i=-2;i>=2;i++ 同样循环条件不满足(一次循环都不执行) D:正确!…
线程安全的集合 http://blog.sina.com.cn/s/blog_508938e10102v1ig.html //make thread-safe list List MyStrList = Collections.synchronizedList(new ArrayList()); MyStrList.add("123"); MyStrList.add("abc"); //make thread-safe hashset Set set=Collect…
如图所示:打印沙漏图形 1:因为外层循环控制图形行数,所以首先判断这四个选项能否循环五次 2:以上四个循环的表达式都能循环五次,我们从内层循环入手. A:int i=0;i<5;i++ 当i=1时;带入到第二个内层循环中 int j=0;j<Math.abs(i)*2+1;j++ 这是第一行最多只能打印出三个*来;不正确 B:int i=4;i>=0;i-- 将i的初值4放入第一个内层循环中: 表达式为:int k=0; k<=2-Math.abs(4);k++==int k=0;…