java8中如何動態遍歷動態多維數組

有兩種實現方法:

  • 可以用List數組來實現

  • 可以用map來實現

  • 方法一:用map來實現

    比如要創建一個1行、3列的數組,實現方法如下:

    public static void main(String[] args) throws CloneNotSupportedException { Map<Double, List<Double>> myMap = create(1, 3);}public static Map<Double, List<Double>> create(double row, double column) { Map<Double, List<Double>> doubleMap = new HashMap<Double, List<Double>>(); for (double x = 0; x < row; x++) { for (double y = 0; y < column; y++) { doubleMap.put(x, new ArrayList<Double>()); } } return doubleMap;}

    方法二:

    可以用List數組來實現

    publicstaticvoidmain(Stringargs[]){

    //list作為動態二維數組

    List<List<String>>list=newArrayList();

    List<String>a1=newArrayList<String>();

    List<String>a2=newArrayList<String>();

    List<String>a3=newArrayList<String>();

    list.add(a1);

    list.add(a2);

    list.add(a3);

    a1.add("string1ina1");

    a1.add("string2ina1");

    a2.add("string1ina2");

    a3.add("string1ina3");

    a3.add("string2ina3");

    for(inti=0;i<list.size();++i){

    for(intj=0;j<list.get(i).size();++j)

    System.out.println(list.get(i).get(j));

    }

    }

㈡ java中的map遍歷有多種方法,從最早的iterator,到java5支持的foreach,再到java8 la

,前者效率更高抄

原因是for直接針對集合里的下一個對象

而iterator其實相當於是一個指針,這樣說不準確,但是可以這樣理解,每次執行它會先查找當前指向的對象,然後指針再指向下一個位置

所以說,如果有指針概念的話,for的「針對」直接是簡單數據,而iterator的指針卻是一個對象

㈢ 初學java 想知道java map集合循環存入數據

可以分開,我幫你寫一個,發不出來

publicclassTest{


publicstaticvoidmain(String[]args){
List<HashMap<String,String>>list=newArrayList<HashMap<String,String>>();
inta=1;
intb=2;

Stringkey="";
Stringvalue="";
for(inti=0;i<50;i++){
HashMap<String,String>map=newHashMap<String,String>();
key=(a+i*2)+"";
value=(b+i*2)+"";
map.put(key,value);
list.add(map);
}

for(inti=0;i<list.size();i++){
System.out.println(list.get(i));
}
}

}

運行結果:

html">{1=2}
{3=4}
{5=6}
{7=8}
{9=10}
{11=12}
{13=14}
{15=16}
{17=18}
{19=20}
{21=22}
{23=24}
{25=26}
{27=28}
{29=30}
{31=32}
{33=34}
{35=36}
{37=38}
{39=40}
{41=42}
{43=44}
{45=46}
{47=48}
{49=50}
{51=52}
{53=54}
{55=56}
{57=58}
{59=60}
{61=62}
{63=64}
{65=66}
{67=68}
{69=70}
{71=72}
{73=74}
{75=76}
{77=78}
{79=80}
{81=82}
{83=84}
{85=86}
{87=88}
{89=90}
{91=92}
{93=94}
{95=96}
{97=98}
{99=100}

㈣ 怎麼用java8 lamada 提取集合中每個對象的屬性

要提取屬性的話,用Stream中的map,然後使用方法引用,就可以了
例如Student類中有name屬性

List<Student> students = new ArrayList<Student>();
List<String> names = students.stream().map(Student::getName).collect(Collectors.toList());

㈤ Java中便歷Map的幾種方法

  • 常見的Map遍歷有下面四種方法:

importjava.util.HashMap;
importjava.util.Iterator;
importjava.util.Map.Entry;

publicclassMapDemo{
publicstaticvoidmain(String[]args){
//准備好需要遍歷的Map
HashMap<String,Integer>map=newHashMap<String,Integer>();
map.put("Tom",85);
map.put("Jack",97);
test1(map);
test2(map);
test3(map);
test4(map);

}

//方法一:迭代器方式
//特點:效率高,速度快,但是代碼量多
publicstaticvoidtest1(HashMap<String,Integer>map){
Iterator<Entry<String,Integer>>it=map.entrySet().iterator();
while(it.hasNext()){
Entry<String,Integer>e=it.next();
System.out.println("name:"+e.getKey()+" score:"+e.getValue());
}
}

//方法二:map.entrySet()for循環
//特點:效率也較高,速度較快,且寫法比方法一簡單
publicstaticvoidtest2(HashMap<String,Integer>map){
for(Entry<String,Integer>e:map.entrySet()){
System.out.println("name:"+e.getKey()+" score:"+e.getValue());
}
}

//方法3map.keySetfor循環
// 特點:效率較慢
publicstaticvoidtest3(HashMap<String,Integer>map){
for(Stringkey:map.keySet()){
System.out.println("name:"+key+" score:"+map.get(key));
}
}

//方法四:forEach
//特點速度較慢,但是代碼少,簡潔;(需要Java8或以上版本的支持)
publicstaticvoidtest4(HashMap<String,Integer>map){
map.forEach((k,v)->System.out.println("name:"+k+" score:"+v));
}
}

四種方法之間的效率比較

(test1≈test2)>(test3≈test4)

推薦: 數據量特別大的時候 使用方法1: 代碼長,但是效率高

數據量較少的, 那麼使用方法4: 代碼簡潔而優雅~

㈥ Java中怎麼遍歷map中value值

Java中遍歷抄Map對象的襲4種方法:

1、通過Map.entrySet遍歷key和value,在for-each循環中使用entries來遍歷.推薦,尤其是容量大時。

(6)java8遍歷map擴展閱讀:

關於JAVA的遍歷知識補充:

1、list和set集合都實現了Iterable介面,所以他們的實現類可以使用迭代器遍歷,map集合未實現該介面,若要使用迭代器循環遍歷,需要藉助set集合。

2、使用EntrySet 遍歷,效率更高。

㈦ java如何遍歷map的所有的元素

package net.nie.test; import java.util.HashMap; import java.util.Iterator; import java.util.Map; public class HashMapTest { private static Map<Integer, String> map=new HashMap<Integer,String>(); /** 1.HashMap 類映射不保證順序;某些映射可明確保證其順序: TreeMap 類 * 2.在遍歷Map過程中,不能用map.put(key,newVal),map.remove(key)來修改和刪除元素, * 會引發 並發修改異常,可以通過迭代器的remove(): * 從迭代器指向的 collection 中移除當前迭代元素 * 來達到刪除訪問中的元素的目的。 * */ public static void main(String[] args) { map.put(1,"one"); map.put(2,"two"); map.put(3,"three"); map.put(4,"four"); map.put(5,"five"); map.put(6,"six"); map.put(7,"seven"); map.put(8,"eight"); map.put(5,"five"); map.put(9,"nine"); map.put(10,"ten"); Iterator<Map.Entry<Integer, String>> it = map.entrySet().iterator(); while(it.hasNext()){ Map.Entry<Integer, String> entry=it.next(); int key=entry.getKey(); if(key%2==1){ System.out.println("delete this: "+key+" = "+key); //map.put(key, "奇數"); // //map.remove(key); // it.remove(); //OK } } //遍歷當前的map;這種新的for循環無法修改map內容,因為不通過迭代器。 System.out.println("-------nt最終的map的元素遍歷:"); for(Map.Entry<Integer, String> entry:map.entrySet()){ int k=entry.getKey(); String v=entry.getValue(); System.out.println(k+" = "+v); } } }

㈧ java8 怎樣將map轉換成list

Map與List是兩種不同的數據類型,不能直接轉換,要說明具體的需求,比如Map中的key和value與List如何對應。

㈨ Java8 新特性 stream().map 能不能跳過元素 ,相當於continue的作用

你好,很高興回答你的問題。
stream()可以調用filter方法,可以用來過濾只保留符合條件的數據,相當於是循環到不符合條件的數據時continue。
如果有幫助到你請點擊點贊。

㈩ Java8,stream().map().collect(Collectors.toList()).forEach()和stream().map().forEach()有啥區別

最主要的區別的就是stream的方式不一定按照原有List的順序遍歷,而直接用for會按照之前的順序進行遍歷,當然stream會更快一點。看具體使用場景