【问题标题】:Remove string from List & sort in java从列表中删除字符串并在java中排序
【发布时间】:2013-02-08 23:39:41
【问题描述】:

我有返回名称和值的列表,我有兴趣通过检查返回列表是否按字母顺序来创建一个 Junit 测试。到目前为止,我已经这样做了,但我得到的结果总是 = TRUE,因为我相信它正在考虑“MINTS......”。所以我的目标是从列表中删除 MINTS ( Name ) 并检查列表 ( VALUE ) 的订单。

表格列表

Junit 代码

public void test() throws Exception
    {
        DataObj dao = new DataObj();

        HashMap<String, Object> params = new HashMap<String, Object>();
        params.put( "code", 100 );

        List<?> values = dao.getDataObj( params, conn );

        String previous = "";
        boolean result = false;

        for ( final Object vCurrent : values )
        {

            String current = vCurrent.toString();
            if ( current.compareTo( previous ) < 0 )
            {
                result = false;
                previous = current;

            }
            result = true;
        }


    }

如果我对值进行打印,我会得到类似“mints Dave mints Jackie mints Derek .....”的内容

【问题讨论】:

  • 问题是......?

标签: java list alphabetical listiterator


【解决方案1】:

您总是在循环的每次迭代结束时设置result = true

你可以这样做:

    String previous = "";
    boolean result = true;

    for ( final Object vCurrent : values )
    {

        String current = vCurrent.getValue();
        if ( current.compareTo( previous ) < 0 )
        {
            result = false;
            break;
        }
    }

【讨论】:

    【解决方案2】:

    如果这应该是 JUnit 测试,那么您应该使用 JUnit "assertXxxx" 方法来进行低级测试;例如像这样的

        import static org.junit.Assert.*;
    
        ....
    
        @Test
        public void testOrdered() {
            DataObj dao = new DataObj();
    
            HashMap<String, Object> params = new HashMap<String, Object>();
            params.put( "code", 100 );
    
            List<?> values = dao.getDataObj( params, conn );
    
            String previous = "";
            for (final Object vCurrent : values) {
                String current = vCurrent.toString();
                assertTrue("list not ordered correctly",  /* this arg is optional */
                           current.compareTo(previous) < 0);
                previous = current;
            }
        }
    

    这完全消除了产生“结果”的需要。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-17
      • 2015-10-25
      • 2021-06-24
      • 2011-04-20
      相关资源
      最近更新 更多