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会更快一点。看具体使用场景