精华内容
下载资源
问答
  • 用JS去遍历Table的所有单元格中的内容,可以用如下JS代码实现 function GetInfoFromTable(tableid) { var tableInfo = ""; var tableObj = document.getElementById(tableid); for (var i = 0; i < ...

    JS去遍历Table的所有单元格中的内容,可以用如下JS代码实现

    function GetInfoFromTable(tableid) {
        var tableInfo = "";
        var tableObj = document.getElementById(tableid);
        for (var i = 0; i < tableObj.rows.length; i++) { //遍历Table的所有Row
            for (var j = 0; j < tableObj.rows[i].cells.length; j++) { //遍历Row中的每一列
                tableInfo += tableObj.rows[i].cells[j].innerText; //获取Table中单元格的内容
                tableInfo += " ";
            }
            tableInfo += "\n";
        }
        return tableInfo;
    }

     

    根据Name获取多个表单

        var tabels = document.getElementsByName(tableid);
    
        alert(tabels.length);
    
        var tableObj = tabels[1];

     

    转载于:https://www.cnblogs.com/leebokeyuan/p/9254095.html

    展开全文
  • 服务器方面:我自己搭建...客户端方面:在连接成功后,用CFtpFileFind类去遍历文件,代码如下 CFtpFileFind fileFind(m_pFtpConnection);  // 通过FindFile()找到第一个文件夹  BOOL bFind = fileFind.Find
    服务器方面:我自己搭建的服务器的根目录是test,test下有test1,test2,test3;

    客户端方面:在连接成功后,用CFtpFileFind类去遍历文件,代码如下

    CFtpFileFind fileFind(m_pFtpConnection);
            // 通过FindFile()找到第一个文件夹
            BOOL bFind = fileFind.FindFile();
            int i = 0;          //改变增加到list的行数
            while (bFind)
            {
            bFind = fileFind.FindNextFile();
                    CString strPath;     //保存路径或文件名
                    if (!fileFind.IsDirectory())    //如果是文件
    {
    strPath = fileFind.GetFileName();
                            m_list.AddString(strPath);
                    }
                   else
                    {
                            strPath = fileFind.GetFilePath();
                            m_list.AddString(strPath);
                    }
            }

     结果list上显示的是
    /
    /
    /
    没有显示出文件夹的名字是怎么回事?
    展开全文
  • 标签遍历List集合 案例: 1)查询出代码在List<String> accountCodes列表中的所有值 mapper文件: List<JournalLineAgeDTO> listGeneralLineAging( RowBounds page, @Param("ew") Wrapper<...

    1.使用<foreach>标签遍历List集合

           用法:

          <if test="accountCodes!=null and accountCodes.size()>0">
                and g.account_code in
                <foreach collection="accountCodes" item="item" separator="," open="(" close=")">
                    #{item}
                </foreach>
            </if>

      案例:   1)查询出代码在List<String> accountCodes列表中的所有值

    mapper文件:

     List<JournalLineAgeDTO> listGeneralLineAging(
    RowBounds page,
     @Param("ew") Wrapper<GeneralLedgerJournalLineDTO> wrapper,
    List<String> accountCodes);

    xml文件:

    <select id="listGeneralLineAging" resultType="com.hand.hcf.app.accounting.web.dto.JournalLineAgeDTO">
    
            select
            l.*
            from(
            select
            T.*,
            IF (T.days &gt;=0 and T.days &lt;=90,T.days,"")day1,
            IF (T.days &gt;=91 and T.days&lt;=180,T.days,"")day2,
            IF (T.days &gt;=181 and T.days&lt;=360,T.days,"")day3,
            IF (T.days &gt;=361 and T.days&lt;=720,T.days,"")day4,
            IF (T.days &gt;=721,T.days,"")day5
            from(
            select
            g.transaction_number,STR_TO_DATE(g.accounting_date,"%Y-%m-%d")accounting_date,g.accounting_period,g.attribute2,CONCAT(g.account_code,"-",(select a.account_desc from fec_mdata.sys_accounts a where g.account_code=a.account_code))accountName,
            g.entered_amount_dr,
            g.entered_amount_cr,
            g.account_code,
            r.company_id,
            DATEDIFF(now(),g.accounting_date)days
            from gl_journal_line g,fec_expense.exp_report_header r
            where g.transaction_number=r.requisition_number and r.status="1004"  and g.entered_amount_dr is not null
            <if test="accountCodes!=null and accountCodes.size()>0">
                and g.account_code in
                <foreach collection="accountCodes" item="item" separator="," open="(" close=")">
                    #{item}
                </foreach>
            </if>
    
            union all
    
            select
            g.transaction_number,STR_TO_DATE(g.accounting_date,"%Y-%m-%d")accounting_date,g.accounting_period,g.attribute2,CONCAT(g.account_code,"-",(select a.account_desc from fec_mdata.sys_accounts a where g.account_code=a.account_code))accountName,
            g.entered_amount_dr,
            g.entered_amount_cr,
            h.company_id,
            g.account_code,
            DATEDIFF(now(),g.accounting_date)days
            from gl_journal_line g,fec_prepayment.csh_payment_requisition_head h
            where g.transaction_number=h.requisition_number and h.status="1004"  and g.entered_amount_dr is not null
    
    
            union all
    
            select
            g.transaction_number,STR_TO_DATE(g.accounting_date,"%Y-%m-%d")accounting_date,g.accounting_period,g.attribute2,CONCAT(g.account_code,"-",(select a.account_desc from fec_mdata.sys_accounts a where g.account_code=a.account_code))accountName,
            g.entered_amount_dr,
            g.entered_amount_cr,
            r.company_id,
            g.account_code,
            DATEDIFF(now(),g.accounting_date)days
            from
            gl_journal_line g,fec_expense.exp_report_header r
            where g.transaction_number=r.requisition_number and
            not EXISTS(select o.* from fec_payment.csh_write_off o where o.document_header_id=r.id)
            and  g.entered_amount_cr is not null
            )T
            )l
    
            <where>
                ${ew.sqlSegment}
            </where>
            order by l.transaction_number asc
        </select>

     

    展开全文
  •   ArrayList与LinkedList的普通for循环遍历...对于大部分Java程序员朋友们来说,可能平时使用得最多的List就是ArrayList,对于ArrayList的遍历,一般用如下写法:   public static void main(String[] args...

    转自:https://www.cnblogs.com/zhilu-doc/p/5292818.html

     

    ArrayList与LinkedList的普通for循环遍历

    对于大部分Java程序员朋友们来说,可能平时使用得最多的List就是ArrayList,对于ArrayList的遍历,一般用如下写法:

     

    public static void main(String[] args)
    {
        List<Integer> arrayList = 
                new ArrayList<Integer>();
        
        for (int i = 0; i < 100; i++)
            arrayList.add(i);
        for (int i = 0; i < 100; i++)
            System.out.println(arrayList.get(i));
    }

    复制代码

     

    如果以后要用到LinkedList了,可能有些朋友就会用一样的方式去遍历LinkedList了:

     

    public static void main(String[] args)
    {
        List<Integer> linkedList = 
                new LinkedList<Integer>();
        
        for (int i = 0; i < 100; i++)
            linkedList.add(i);
        for (int i = 0; i < 100; i++)
            System.out.println(linkedList.get(i));
    }

    复制代码

    请记住:这是一种非常糟糕的做法。这其实已经不是Java的问题,而是数据结构的问题了,我相信语言从Java换成其他的也都一样。

    下面对ArrayList和LinkedList的普通for循环效率进行测试以及分析原因。

     

    ArrayList和LinkedList使用普通for循环遍历速度对比

    先给出测试代码:

     

    public class ArrayListAndLinkedList {
        
        private static final int LIST_SIZE = 1000;
        
        public static void main(String[] args) {
            List<Integer> arrayList = new ArrayList<Integer>();
            List<Integer> linkedList = new LinkedList<Integer>();
            
            for(int i = 0; i < LIST_SIZE; i++){
                arrayList.add(i);
                linkedList.add(i);
            }
            
            long startTime = System.currentTimeMillis();
            for(int i = 0; i < arrayList.size(); i++){
                arrayList.get(i);
            }
            System.out.println("ArrayList的for循环遍历速度:" + (System.currentTimeMillis() - startTime) + "ms");
            
            startTime = System.currentTimeMillis();
            for(int i = 0; i < linkedList.size(); i++){
                linkedList.get(i);
            }
            System.out.println("LinkedList的for循环遍历速度:" + (System.currentTimeMillis() - startTime) + "ms");
            
        }

     

    不断增大LIST_SIZE,我用表格表示一下运行结果:

     

      1000 5000 10000 50000 100000
    ArrayList 0ms  1ms 2ms 3ms 3ms
    LinkedList 3ms 16ms 88ms 2446ms 18848ms

    从运行结果我们看到,按倍数增大List容量,ArrayList的遍历显得比较稳定,而LinkedList的遍历几乎是爆发式的增长,再测试下去已经没有必要了。

    下面解释一下产生此现象的原因。

    ArrayList使用普通for循环遍历快的原因

    先看一下ArrayList的get方法源代码:

    public E get(int index) {
            rangeCheck(index);
    
            return elementData(index);
        }

    看到ArrayList的get方法只是从数组里面拿一个位置上的元素罢了。我们有结论,ArrayList的get方法的时间复杂度是O(1),O(1)的意思也就是说时间复杂度是一个常数,和数组的大小并没有关系,只要给定数组的位置,直接就能定位到数据。

    其实熟悉C、C++或者对指针理解的朋友一定很好理解为什么,我解释一下为什么对数组使用get就快。

    在计算机底层,数据都是有地址的,就像人有住址一样。假设我写了这么一句代码:

    int[3] ints = {1, 3, 5};

    在Java中一个int型数据是4个字节,此时计算机内部做的事情是,在内存空间中找到一块连续的、足以存放3个4字节也就是12字节的数组的内存空间,并返回该内存空间的首地址。比方说该内存空间的首地址是0x00吧,那么那么1就放在0x00~0x03中、3就放在0x04~0x07中、5就放在0x08~0x0B中。

    这时就很简单了,取ints[1]的时候,计算机就会算出ints[1]的数据是存放在以0x04开头,占据4个字节空间的内存中,因此,计算机会从0x04~0x07这块地址空间中读取数据出来。

    整个过程,和数组有多大,并没有关系,计算机做的只是算出起始地址-->去该地址中取数据而已,因此我们看到使用普通for循环遍历ArrayList的速度很快,也很稳定。

    LinkedList使用普通for循环遍历慢的原因

    再看一下LinkedList的get方法做了什么:

    public E get(int index) {
            checkElementIndex(index);
            return node(index).item;
        }

     

    Node<E> node(int index) {
            // assert isElementIndex(index);
    
            if (index < (size >> 1)) {
                Node<E> x = first;
                for (int i = 0; i < index; i++)
                    x = x.next;
                return x;
            } else {
                Node<E> x = last;
                for (int i = size - 1; i > index; i--)
                    x = x.prev;
                return x;
            }
        }

     

    由于LinkedList是双向链表,因此第6行的意思是算出i在一半前还是一半后,一半前正序遍历、一半后倒序遍历,这样会快很多,当然,先不管这个,分析一下为什么使用普通for循环遍历LinkedList会这么慢。

    原因就在第7~第8行,第10~第11行的两个for循里面,以前者为例:

    1、get(0),直接拿到0位的Node0的地址,拿到Node0里面的数据

    2、get(1),直接拿到0位的Node0的地址,从0位的Node0中找到下一个1位的Node1的地址,找到Node1,拿到Node1里面的数据

    3、get(2),直接拿到0位的Node0的地址,从0位的Node0中找到下一个1位的Node1的地址,找到Node1,从1位的Node1中找到下一个2位的Node2的地址,找到Node2,拿到Node2里面的数据。

    后面的以此类推。

    也就是说,LinkedList在get任何一个位置的数据的时候,都会把前面的数据走一遍。假如我有10个数据,那么将要查询1+2+3+4+5+5+4+3+2+1=30次数据,相比ArrayList,却只需要查询10次数据就行了,随着LinkedList的容量越大,差距会越拉越大。其实使用LinkedList到底要查询多少次数据,大家应该已经很明白了,来算一下:按照前一半算应该是(1 + 0.5N) * 0.5N / 2,后一半算上即乘以2,应该是(1 + 0.5N) * 0.5N ,忽略低阶项和首项系数,得出结论,LinikedList遍历的时间复杂度为O(N*N),N为LinkedList的容量。

    时间复杂度有以下经验规则:

    O(1) < O(log2N) < O(n) < O(N * log2N) < O(N2) < O(N3) < 2N < 3N < N!

    前四个比较好、中间两个一般、后3个很烂。也就是说O(N2)是相对糟糕的一种时间复杂度了,N大一点,程序就会执行得比较慢。

     

    根据以上的分析,各位Java程序员朋友们,切记一定不要使用普通for循环去遍历LinkedList。使用迭代器或者foreach循环(foreach循环的原理就是迭代器)去遍历LinkedList即可,这种方式是直接按照地址去找数据的,将会大大提升遍历LinkedList的效率。

     

    另注:LinkedList的遍历,因为它是双向链表,只是说index在前一半和后一半,分别采用正序遍历和倒序遍历以加快LinkedList的遍历速度。真正遍历的时候还是顺序的遍历,不会采用二分查找的。

     

    展开全文
  • 如题,我有一个目录,下面有一般文件和目录文件,我不想让这个函数再去遍历这个目录底下的目录文件,怎么限制? 通过int depth吗,可是这个数字我看解释并不是这个意思?
  • python中碰到多重dict,如下所示的双层dict,遍历里面的所有元素需要双重循环。现在为了代码美观,希望一句话就可以代替这样的双重for循环。 # 双重dict _dict = { 'A': { 'A1': [1, 2], 'A2': [3, 4] }...
  • 在后端代码中,我们如果遍历字典,需要用 for key,value in data.items(): ... 如果我们在views给前端传送了一个字典,前端需要这样遍历 {% for key,value in data.items %} ... {% endfor %} ...
  • ArrayList与LinkedList的普通for循环遍历对于大部分Java程序员朋友们来说,可能平时使用得最多的List就是ArrayList,对于ArrayList的遍历,一般用如下写法:public static voidmain(String[] args){List arrayList =...
  • 我们可以通过user_tab_column这张表来获取数据库中所有列对应的信息包括列对应的精度、类型以及表名 select utc.TABLE_NAME,utc.COLUMN_NAME,utc.DATA_TYPE,utc.DATA_LENGTH,utc.DATA_PRECISION,utc.DATA_DEFAULT,...
  • 但是定义了多个class全都写js的话又太复杂了,这时就想到了for,JQ里面的for是each这里简单的介绍一下它的用法,主要是完成上面描述class多个的问题。 for(int i = 0;i < 5; i++) System.out.print(i + ...
  • 解决方案: 这里我有想到过用直接用list for循环删除,发现 ,使用普通for...iterator遍历 : Iterator&lt;String&gt; iterator = list.iterator(); while(iterator.hasNext()){ Stri...
  • 方法:用一个容器,当学生刷卡时候,先遍历该容器,看能否找到该学生信息的记录,如果没有,那么就是上车,并增加该记录;如果有,就是下车,并清除该记录。 过程:  std::mapm_StudentInfo_forYTSchoolbus;   ...
  • 假如我有一个接口叫IA,继承它的类有3个活着N个,我怎么去遍历这些类呢? interface IA{} class B:IA{} class C:IA{} class D: IA{} 我怎么去遍历这些类呢
  • Array.prototype.eee = 'eee' var arr = ['aaa','bbb','ccc','ddd'] console.log(arr) for (var i in arr){ console.log(arr[i]) } // 99758@zsh MINGW64 ~/Desktop ...// [ 'aaa', 'bb...
  • #include #include #include #include struct student{ char name[10]; ...我插入一个节点第0个位置 就是头结点那个位置 插入完了以后遍历只能显示出第一个节点 这是怎么回事啊请教各位!!
  • //遍历该xml文件 public static void list(Node node){ if(node.getNodeType()==node.ELEMENT_NODE) System.out.println("名字:"+node.getNodeName()); //取出node的子节点 NodeList nodelist=node....
  • File,FileOutputStream
  • 1 var arr = [1,'a',56,'dj', 'dfa', 56, 'a'] 2 function qu(arr){ 3 var newArray=[];//定义一个空数组用来接收源数组中的元素 4 for(var i= 0; i < arr.length; i++) ... 6 var result...
  • python遍历XML文件并修改某个属性(九宫格批量修改)欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表...
  • //本函数是使用了反射来实现访问对象的属性值的函数 //using System.Reflection; private void GetObjectPropertyValue(clsUser user) { Type t = user.GetType();... foreach (PropertyInfo pi in t....
  • 背景 ...比如,我写的《在VS2013中编程使用WMI》这篇文章中,使用的是WMI去遍历进程的。 现在,我把这个小程序实现的思路以及实现过程,写成文档分享给大家。 点击此处下载文档和源码 ...
  • Morris遍历

    2020-05-20 12:30:37
    在遍历过程中,我觉得最重要的就是当我们遍历完一个节点的左子树之后,能够回到当前节点,继而继续去遍历右子树。因此我们需要关心的就是如何回到当前节点。 和用栈实现的遍历方式相比, morris需要遍历两遍。 记...
  • 遇到一个节点,就把它压栈,并去遍历它的左子树; 当左子树遍历结束后,从栈顶弹出这个节点并访问它; 然后按其右指针再去中序遍历该节点的右子树。 中序非递归遍历代码: 1 void InOrderTraversal(BinTree...
  • forEach遍历

    2019-09-29 04:30:52
    一般我们都是使用 for 循环去遍历数组,JS中还为我们提供了一个方法,用来遍历数组:forEach()  - 这个方法只支持 IE8 以上的浏览器,IE8 及以下的浏览器不支持该方法,  如果需要兼容 IE8,则不要使用forEach...
  • 遍历对象

    2021-03-11 20:00:32
    //为什么对象也能像数组一样去遍历 //原因:数组也是一个对象 // let ary = [‘a’, ‘b’, ‘c’]; // console.log(ary); //第一数组可以这样写 // let ary = new Array(); // console.log(ary); //2.遍历对象的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,761
精华内容 6,304
关键字:

去遍历