论坛首页 Java企业应用论坛

List 值你能猜对多少个,一般的人都没能答对,奇怪的List

浏览 5259 次
该帖已经被评为隐藏帖
作者 正文
   发表时间:2010-07-23   最后修改:2010-07-23

不要运行,看看你能猜出下面有几个1,看看你的思维是什么样的。能不能全猜对。

 

1、下面有几个“1”

List<String> list=new ArrayList<String>();
list.add("1");
list.add("1");
list.add("1");
list.add("1");
list.add("4");
list.add("5");
list.add("1");
list.add("7");
list.add("8");
list.add("9");
list.add("1");

list.add("1");

for(int i=0;i<list.size();i++){
	if("1".equals(list.get(i))){
		list.remove(i);
	}else{
		list.set(i, "1");
	}
}

for(int i=0;i<list.size();i++){
	System.out.print(list.get(i)+"\t");
}

 

 

 2、下面有几个1

		List<String> list=new ArrayList<String>();
		list.add("1");
		list.add("1");
		list.add("1");
		list.add("1");
		list.add("4");
		list.add("5");
		list.add("1");
		list.add("7");
		list.add("8");
		list.add("9");
		list.add("1");
		
		list.add("1");
		
		for(int i=0;i<list.size();i++){
			if("1".equals(list.get(i))){
				list.remove(i);
				--i;
			}else{
				list.set(i, "1");
			}
		}
		
		for(int i=0;i<list.size();i++){
			System.out.print(list.get(i)+"\t");
		}

 3、下面有几个1

		List<String> list=new ArrayList<String>();
		list.add("4");
		list.add("5");
		list.add("8");
		list.add("1");
		list.add("1");
		list.add("1");
		list.add("4");
		list.add("5");
		list.add("1");
		list.add("7");
		list.add("8");
		list.add("9");
		list.add("1");
		list.add("1");
		
		for(int i=0;i<list.size();i++){
			if("1".equals(list.get(i))){
				list.remove(i);
			}else{
				list.set(i, "1");
			}
		}
		
		for(int i=0;i<list.size();i++){
			System.out.print(list.get(i)+"\t");
		}

 

 

 

   发表时间:2010-07-24  
有时候结果还真的不是自己想的那样,一运行一看,错了。
0 请登录后投票
   发表时间:2010-07-24   最后修改:2010-07-24
leiwuluan 写道

这样遍历删除的问题,List长度不断减少

 

 

0 请登录后投票
   发表时间:2010-07-24  
对啊、、、新手写程序要注意的,有时候想法是对了但是逻辑不知不觉的错了,
0 请登录后投票
   发表时间:2010-07-24  
这样遍历去remove肯定有问题~ iterator的remove会稳定的
0 请登录后投票
   发表时间:2010-07-24  
1题数的是6个
0 请登录后投票
   发表时间:2010-07-24  
huangfoxAgain 写道
这样遍历去remove肯定有问题~ iterator的remove会稳定的


正解
0 请登录后投票
   发表时间:2010-07-24  
恩 后来从1开始数了, 第一个元素该是第0个的
0 请登录后投票
   发表时间:2010-07-24  
其实很简单,list   remove   里面的参数是index ,然后调整元素的index,这跟set的remove不同,set  的remove参数是对象
0 请登录后投票
   发表时间:2010-07-24  
这个就是remove以后的游标的变化么
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics