GVKun编程网logo

如何使用JSTL forEach循环迭代HashMap?(js中foreach循环遍历数组)

4

本文将为您提供关于如何使用JSTLforEach循环迭代HashMap?的详细介绍,我们还将为您解释js中foreach循环遍历数组的相关知识,同时,我们还将为您提供关于asp.net–如何使用for

本文将为您提供关于如何使用JSTL forEach循环迭代HashMap?的详细介绍,我们还将为您解释js中foreach循环遍历数组的相关知识,同时,我们还将为您提供关于asp.net – 如何使用foreach循环清除所有文本框?、Bash foreach循环、c# – 将foreach循环更改为Parallel.ForEach循环、HashMap、HashTable、ConcurrentHashMap、TreeMap、LinkedHashMap、WeakHashMap区别的实用信息。

本文目录一览:

如何使用JSTL forEach循环迭代HashMap?(js中foreach循环遍历数组)

如何使用JSTL forEach循环迭代HashMap?(js中foreach循环遍历数组)

在我的Spring
MVC应用程序中,我从controllerServlet返回了HashMap。现在,我需要使用JSTL在我的jsp中将其打印出来。请帮忙。我是新来的。

asp.net – 如何使用foreach循环清除所有文本框?

asp.net – 如何使用foreach循环清除所有文本框?

public void clear()
  {
    lblage.Text = "";
    lblclosingbirds.Text = "";
    lbltypeofFeed.Text = "";
    lbltypeofFeedf.Text = "";
    lblstdFeed.Text = "";
    lblstdFeedf.Text = "";
    lblstdhd.Text = "";
    lblstdhe.Text = "";
    lblExpeggs.Text = "";
    lblbirdsf.Text = "";
    txtacteggs.Text = "";
    txtactFeed.Text = "";
    txtactFeedf.Text = "";      
    txtfemaleclosingstock50.Text = "";
    txtfemaleclosingstock70.Text = "";
    txtmale50kgcstock.Text = "";
    txtmale70kgscstock.Text = "";
    txtmort.Text = "";
    txtmortf.Text = "";
    txtuseeggs.Text = "";
    ddlFemaleFeedtype.SelectedValue = "0";
    ddlMaleFeedtype.SelectedValue = "0";

}

如何使用foreach循环方法替换为clear()..请告诉我..任何一个…
是不是可以编写foreach循环…请告诉我

解决方法

void ClearallControlsRecursive(Control container)
{
    foreach(var control As Control in container.Controls)
    {
        if(typeof control is TextBox)
        {
            ((TextBox)control).Text = String.Empty;
        }
        if(control.HasControls())
        {
            ClearallControlsRecursive(control);  
        }
    }
}

然后像这样调用这个方法:

ClearallControlsRecursive(yourContainer);

您还可以打开控件类型并相应地清除值.

Bash foreach循环

Bash foreach循环

我有一个输入(我们说一个文件)。
在每行上都有一个文件名。
如何读取此文件并显示每个文件的内容。
这样的事情会做:
xargs cat <filenames.txt

xargs程序读取其标准输入,并且对于每行输入,以输入行作为参数运行cat程序。

如果你真的想在循环中这样做,你可以:

for fn in `cat filenames.txt`; do
    echo "the next file is $fn"
    cat $fn
done

c# – 将foreach循环更改为Parallel.ForEach循环

c# – 将foreach循环更改为Parallel.ForEach循环

好的,这是基本背景.该程序连接到outlook / exchange并解析所有邮件消息以查看哪些是加密的.我想做的一件事是使用多线程来减少扫描消息所需的时间.

目前代码如下所示:

foreach (Object item in folder.Items) {
//Checks for encryption and gets needed info and updates count
}

我想改用Parallel.ForEach函数.我想知道如何设置它.我尝试将表达式设置为现在的样式,但是我得到一个错误,指出Object类型被用作变量.任何有关这方面的帮助将不胜感激.

好的,我给出的布局似乎是正确的.代码现在看起来像这样:

Parallel.ForEach(folder.Items,item =>
{
//does stuff
});

我现在收到以下错误:

Error 15 The type arguments for method
System.Threading.Tasks.Parallel.ForEach(System.Collections.Concurrent.OrderablePartitioner,
System.Action)’
cannot be inferred from the usage. Try specifying the type arguments
explicitly.

有任何想法吗?感谢您的帮助,非常感谢.

好的,我找到了这个网站:http://blogs.msdn.com/b/pfxteam/archive/2010/03/02/9971804.aspx,它给了我错误所需的答案.我只需要通过制作一个转换函数将集合更改为通用集合.

static IEnumerable<object> Cast(IEnumerable source)
{
    foreach (object o in source)
        yield return o;
}

然后调整原件

Parallel.ForEach(Cast(folder.Items),item =>
{
//does stuff
});

现在它运行没有错误.欢呼.

解决方法

像这样的东西:
Parallel.For(0,folder.Items.Count - 1,delegate(int i) { 
  object item = folder.Items[i];
});

或者使用ForEach:

Parallel.ForEach(folder.Items,item => {whatever you want to do with item})

注意:folder.Items必须实现IEnumerable

HashMap、HashTable、ConcurrentHashMap、TreeMap、LinkedHashMap、WeakHashMap区别

HashMap、HashTable、ConcurrentHashMap、TreeMap、LinkedHashMap、WeakHashMap区别

1. HashMap

  标准链地址法实现(下图)。数组方式存储key/value,线程非安全,允许null作为keyvaluekey不可以重复,value允许重复,不保证元素迭代顺序是按照插入时的顺序,keyhash值是先计算keyhashcode值,然后再进行计算,每次容量扩容会重新计算所以keyhash值,会消耗资源,要求key必须重写equalshashcode方法。默认初始容量16,加载因子0.75,扩容为旧容量乘2,查找元素快,如果key一样则比较value,如果value不一样,则按照链表结构存储value。如果需要同步,可以用 CollectionssynchronizedMap方法(Map m = Collections.synchronizedMap(new HashMap(…));)。使HashMap具有同步的能力,或者使用ConcurrentHashMap

  

 

JDK 1.8之后,加入了static final int TREEIFY_THRESHOLD = 8;,当同一桶内元素个数超过8个,就会将链表结构进行树化。

    /**
     * The bin count threshold for using a tree rather than list for a
     * bin.  Bins are converted to trees when adding an element to a
     * bin with at least this many nodes. The value must be greater
     * than 2 and should be at least 8 to mesh with assumptions in
     * tree removal about conversion back to plain bins upon
     * shrinkage.
     */
    static final int TREEIFY_THRESHOLD = 8;

2. HashTable

  线程安全,不允许有null的键和值,线程安全的,它在所有涉及到多线程操作的都加上了synchronized关键字来锁住整个table,这就意味着所有的线程都在竞争一把锁,在多线程的环境下,它是安全的,但是无疑是效率低下的。

3. ConcurrentHashMap

  HashTable有很多的优化空间,锁住整个table这么粗暴的方法可以变相的柔和点,比如在多线程的环境下,对不同的数据集进行操作时其实根本就不需要去竞争一个锁,因为他们不同hash值,不会因为rehash造成线程不安全,所以互不影响,这就是锁分离技术,将锁的粒度降低,利用多个锁来控制多个小的table,这就是ConcurrentHashMap JDK1.7版本的核心思想。

JDK1.7的实现

在JDK1.7版本中,ConcurrentHashMap的数据结构是由一个Segment数组和多个HashEntry组成,如下图所示:

  

 

  Segment数组的意义就是将一个大的table分割成多个小的table来进行加锁,也就是上面的提到的锁分离技术,而每一个Segment元素存储的是HashEntry数组+链表,这个和HashMap的数据存储结构一样

JDK1.8的实现

  JDK1.8的实现已经摒弃了Segment的概念,而是直接用Node数组+链表+红黑树的数据结构来实现,并发控制使用SynchronizedCAS来操作,整个看起来就像是优化过且线程安全的HashMap,虽然在JDK1.8中还能看到Segment的数据结构,但是已经简化了属性,只是为了兼容旧版本。

  

4. TreeMap

  TreeMap实现SortMap接口,基于红黑二叉树的NavigableMap的实现,线程非安全,不允许nullkey不可以重复,value允许重复,存入TreeMap的元素应当实现Comparable接口或者实现Comparator接口,会按照排序后的顺序迭代元素,两个相比较的key不得抛出classCastException。主要用于存入元素的时候对元素进行自动排序,迭代输出的时候就按排序顺序输出

5. LinkedHashMap

  LinkedHashMapHashMap的一个子类,保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的。也可以在构造时用带参数,按照应用次数排序。在遍历的时候会比HashMap慢,不过有种情况例外,当HashMap容量很大,实际数据较少时,遍历起来可能会比LinkedHashMap慢,因为LinkedHashMap的遍历速度只和实际数据有关,和容量无关,而HashMap的遍历速度和他的容量有关。

6. WeakHashMap

  WeakHashMap,从名字可以看出它是某种 Map,允许null作为keyvalue(Both null values and the null key are supported.),非线程安全(this class is not synchronized)。它的特殊之处在于 WeakHashMap 里的entry可能会被GC自动删除,即使程序员没有调用remove()或者clear()方法。

更直观的说,当使用 WeakHashMap 时,即使没有显示的添加或删除任何元素,也可能发生如下情况:

  • 调用两次size()方法返回不同的值;
  • 两次调用isEmpty()方法,第一次返回false,第二次返回true
  • 两次调用containsKey()方法,第一次返回true,第二次返回false,尽管两次使用的是同一个key
  • 两次调用get()方法,第一次返回一个value,第二次返回null,尽管两次使用的是同一个对象。

  WeekHashMap的这个特点特别适用于需要缓存的场景。在缓存场景下,由于内存是有限的,不能缓存所有对象;对象缓存命中可以提高系统效率,但缓存MISS也不会造成错误,因为可以通过计算重新得到。

  要明白WeekHashMap的工作原理,还需要引入一个概念:弱引用(WeakReference)。Java中内存是通过GC自动管理的,GC会在程序运行过程中自动判断哪些对象是可以被回收的,并在合适的时机进行内存释放。GC判断某个对象是否可被回收的依据是,是否有有效的引用指向该对象。如果没有有效引用指向该对象(基本意味着不存在访问该对象的方式),那么该对象就是可回收的。这里的“有效引用”并不包括弱引用。也就是说,虽然弱引用可以用来访问对象,但进行垃圾回收时弱引用并不会被考虑在内,仅有弱引用指向的对象仍然会被GC回收

  WeakHashMap内部是通过弱引用来管理entry的,弱引用的特性对应到WeakHashMap上意味:将一对key, value放入到WeakHashMap里并不能避免该key值被GC回收,除非在WeakHashMap之外还有对该key的强引用

今天关于如何使用JSTL forEach循环迭代HashMap?js中foreach循环遍历数组的讲解已经结束,谢谢您的阅读,如果想了解更多关于asp.net – 如何使用foreach循环清除所有文本框?、Bash foreach循环、c# – 将foreach循环更改为Parallel.ForEach循环、HashMap、HashTable、ConcurrentHashMap、TreeMap、LinkedHashMap、WeakHashMap区别的相关知识,请在本站搜索。

本文标签: