java中删除重复数据

 先描述一下我遇到的问题,我在做一个消费项目设置的时候,需要在页面上用表格列出所有的消费项目,加上增删改查功能,还有一个快速定位需要在下拉列表框中动态的添加二级消费项目(就是消费项目的其中一个字段)。最开始的想法自然是从数据库中查出来直接添加,因为这个二级消费项目字段前面还有个一级项目字段,所以有的消费项目的二级消费项目为空,也有同时几条记录都属于某个二级消费项目的情况,所以列出来的下拉列表很乱。言归正传,怎么过滤掉其中的重复数据呢?

StringBuilder是不可继承的,没办法修改功能,所以不能再append的过程中做操作,所以我们只能先把重复的数据过滤掉,然后再用StringBuilder的append方法。CSDN上有这样一个举例:

现有StringBuilder对象一个:ItemList

有两个string类型的变量: "1,2,3,4,5,6 "   和    "3,4,5,6,7,8 "

问题:

如何让ItemList对象在Append()这两个string变量之后,得到的结果是:

"1,2,3,4,5,6,7,8 "

viena网友解答:

StringCollection   sc   =   new   StringCollection();
string[]   arr   =    "1,2,3,4,5,6 ".Split( ', ');
foreach(string   str   in   arr)
{
             if(!sc.Contains(str))
             {
                         sc.Add(str);
             }
}
string[]   arr2   =    "3,4,5,6,7,8 ".Split( ', ');
foreach(string   str   in   arr2)
{
             if(!sc.Contains(str))
             {
                         sc.Add(str);
             }
}
StringBuilder   sb   =   new   StringBuilder();   
foreach(string   str   in   sc)
{
             sb.Append(str);
}

就是先用一个StringCollection对象过滤掉所有重复的项 ,再将StringCollection对象中的项分别添加到StringBuilder对象,

但我试了一下,在我的serveice的实现类里StringCollection不好用啊,跟上例中的情况貌似也不太符合,我把它改成ArrayList类型就好用多了,

具体代码: @Override
 public StringBuilder listsecondCategoryToSelect() {

ArrayList list0=new ArrayList();
  List<Category> list = categoryDao.listCategory();
  Iterator<Category> iter = list.iterator();
  StringBuilder builder = new StringBuilder("");
  builder.append("({"); 
  int i = 1;
  while (iter.hasNext()) {
   Category category = iter.next();  
   String st=category.getSecondCategory();

    list0.add(st);
   if (!list0.contains(st) && st.trim() != "" && st.trim()!=null&& !st.trim().equals("") ) {
    builder.append("" + i + ":").append("{id:\"")
    .append(category.getId()).append("\",secondCategory:\"")
    .append(st).append("\"},");
   } else {
    continue;
   }
   i++;
  }
  i--;
  builder.append("listInfo:{num:" + i + "}})");
  return builder;
 }

这样就ok了,动手试一下?其实也可以用set自动去除重复数据,方法很多的


 


 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值