Java中遍歷List的方式有很多種,在遍歷List時,每個人都有自己的偏好。接下來,我們總結一下遍歷List的幾種方式。
這是最常用的遍歷方式,用計數器從0開始,一次從List中取出元素,如下:
for (int i =0;i<list.size();i++){ String s = list.get(i); System.out.println("s="+s); }
這種方式寫法最簡單,也受到廣大程序員的青睞,如下:
for (String s : list) { System.out.println("s="+s); }
大部分程序員都會這樣寫。
使用迭代器進行遍歷,也是非常經典的方式。而且在迭代中,在集合中增減元素,是不會影響遍歷的,如下:
Iterator<String> itr = list.iterator(); while (itr.hasNext()){ String s = itr.next(); System.out.println("s="+s); }
在Java 8 之后,引入了Foreach遍歷,這種方式給我們在開發中帶來了極大的方便,如下:
list.foreach ( s -> { System.out.println("s="+s); });
如果大家對這種語法不熟悉,還是盡快學習一下java 8 吧,不然就要落伍了。
Java中遍歷List的方式就總結到這里,大家要做到活學活用哦~ 不要拘泥某一種方式。
在這篇文章中,我們對 Java 如何逆向遍歷一個 List 進行了一些簡單的描述。
Iterator 是在 Java Collections 框架中的一個接口:Iterator (Java SE 11 & JDK 11 )
在 Java 的 Collections 框架中,允許使用 Iterator 來對 List 中的元素進行遍歷。
Iterator 是在 Java 1.2 的版本中推出的,用于替代 JDK 中的 Enumeration。
當然在當前的 JDK 中,你還是能夠看到 Enumeration 的影子的。
這種就是最簡單的思路的,將正向遍歷使用的 i++ 變成 i–。
因為我們使用 i 來表示 List 中元素的下標,如果將 i 的查找方式從前往后變成從后往前,就能夠完成 List 的逆向遍歷了。
for (int i = list.size(); i-- > 0; ) {
System.out.println(list.get(i));
}
迭代器 中還有一個 ListIterator 迭代器,在這個 ListIterator 迭代器中,如果你為迭代器提供了 List 的長度的話,這個 ListIterator 迭代器將會將 List 的指針指向到 List 最后的一個元素。
ListIterator listIterator = list.listIterator(list.size());
然后使用 ListIterator 提供的 hasPrevious 方法,從后往前進行迭代。
while (listIterator.hasPrevious()) {
System.out.println(listIterator.previous());
}
Collections 是 JDK 提供的一個類,在這個類中,有一個靜態 reverse 方法。
使用這個方法將會對你提供的 List 進行逆向排序。
Collections.reverse(list);
對重新排序后的 List,你可以使用正常的迭代器從前往后進行迭代查找。
for (String item : list) {
System.out.println(item);
}
需要注意的是,這個方法將會對輸入的 List 順序進行修改,在很多時候,這個可能是你在編程時候并不希望出現的情況。
many cases.
Apache Commons Collections 工具類中,提供了 ReverseListIterator 類,使用這個類,將會返回逆向 List 的迭代器。
這個方法只會返回逆向迭代器,并不會對輸入的 List 進行修改,因此你不需要擔心原始輸入 List 中元素進行改變的情況。
在使用 Apache Collections 工具類之前,你需要在你的 pom 文件中添加下面的內容:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.1</version>
</dependency>
你可以通過在 ReverseListIterator 構造方法中,傳入一個原始的 List,然后獲得 ReverseListIterator 的迭代器實例。
ReverseListIterator reverseListIterator = new ReverseListIterator(list);
在獲得這個迭代器實例后,就可以使用正常的迭代方法對元素進行遍歷和輸出了:
while (reverseListIterator.hasNext()) {
System.out.println(reverseListIterator.next());
}
你還可以簡單的使用 Google 提供的 Guava 庫中的靜態 reverse() 方法,這個方法將會返回一個輸入 List 的逆向視圖。
使用最新的 Guava 依賴:
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>31.0.1-jre</version>
</dependency>
然后對原始的 List 進行逆向視圖,使用下面的方法將會返回一個逆向的 List 視圖。
List<String> reversedList = Lists.reverse(list);
返回后的逆向視圖,將可以使用迭代器進行迭代后遍歷:
for (String item : reversedList) {
System.out.println(item);
}
這個方法將會返回一個新逆向后的 List,原始 List 的順序是不會改變的。
在本篇文章中,我們對如何將一個 List 進行逆向進行了一些說明和演示。
將一個原始 List 逆向輸出的方法比較簡單,通常使用上面 3 個思路就可以完成逆向元素的輸出了。
何實現Mybatis循環List,動力節點小編來告訴大家:
第一步:Mapper.java接口
void subInsert(List<Map<String, String>> list);
第二步:對應的statement標簽:
<!-- ==================================批量插入記錄================================== --> <insert id="subInsert" parameterType="java.util.Map"> INSERT INTO table_name (id,start_time,balance)VALUES <foreach collection="list" item="item" separator=","> ( NULL, #{item.start_time}, #{item.balance} ) </foreach> </insert>
第三步:jdbc鏈接添加&allowMultiQueries=TRUE,因為Mabatis默認不支持一個statement標簽寫多個sql,案例如下:
jdbc.url=jdbc:mysql://192.168.1.110/data_test?useUnicode=TRUE&characterEncoding=utf-8&allowMultiQueries=TRUE
通過以上三步就可以做到Mybatis循環List,
*請認真填寫需求信息,我們會在24小時內與您取得聯系。