为了账号安全,请及时绑定邮箱和手机立即绑定

关于重复浏览的商品不会重复出现在商品记录里面的解决办法

public ArrayList<Items> getViews(String list,int j){//多传入了一个int j是为了保证最多显示规定的商品记录个数
	String[] arr = list.split(",");		
	ArrayList<Items> itemList = new ArrayList<Items>();		
	//遍历数组添加到集合中去		
	for (int i = arr.length-1; i > 0-1; i--) {			
	//如果集合中已经存在相同商品了就先删除前面的			
	    for(int k = 0;k < itemList.size();k++){				
	        if (itemList.get(k).equals(this.getView(Integer.parseInt(arr[i])))) {				
	        	itemList.remove(k);//删除之前有的相同商品					
	        	j++;		//因为删除了一件商品,所以需要j++		
	            }			
	        }			
	        itemList.add(this.getView(Integer.parseInt(arr[i])));//添加对应的id商品到集合中去			
	        j--;			//成功添加一个商品,j--
	        //用j<0其实添加了j+1个商品去集合			
	        if (j<0) {				
	            break;			
	       }		
	 }		
	 return itemList;	
}

总结:

1、通过传入参数j,添加商品到集合就减一,删除商品到集合就加一,如果j<0就直接break跳出循环,不再添加商品进集合;

2、用两个for循环,判断前面集合里面是否已经有相同商品了,反正只要没到j<0,外部循环每次肯定是要添加商品的,内部循环并判断是否之前已经有相同商品了,有的话直接删除之前已经有的;

3、本来集合循环比较是否有相同商品可以用foreach语句更简单,但是就是不行,我也不知道原因,只能用这种原始的for循环语句;

4、添加商品时,getView()方法是之前创建的获取具有指定id值商品的方法;

5、互相交流学习,有更好的方法欢迎大神指正。

正在回答

2 回答

J的初值是多少啊

0 回复 有任何疑惑可以回复我~
public ArrayList<Items> getViews(String list,int j){//多传入了一个int j是为了保证最多显示规定的商品记录个数    
    String[] arr = list.split(",");         
    ArrayList<Items> itemList = new ArrayList<Items>();        
    //遍历数组添加到集合中去          
    for (int i = arr.length-1; i > 0-1; i--) {             
        //如果集合中已经存在相同商品了就先删除前面的                
        for(int k = 0;k < itemList.size();k++){                        
            if (itemList.get(k).equals(this.getView(Integer.parseInt(arr[i])))) {                            
                itemList.remove(k);//删除之前有的相同商品                                
                j++;        //因为删除了一件商品,所以需要j++                    
            }                      
        }                      
        itemList.add(this.getView(Integer.parseInt(arr[i])));//添加对应的id商品到集合中去                      
        j--;            //成功添加一个商品,j--            
        //用j<0其实添加了j+1个商品去集合                    
        if (j<0) {                           
            break;                    
        }         
    }        
    return itemList;
}


1 回复 有任何疑惑可以回复我~
#1

sqsq

J的初值是多少啊
2018-11-15 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

关于重复浏览的商品不会重复出现在商品记录里面的解决办法

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信