当前位置:   article > 正文

Java三元运算符 foreach操作_foreach能用三元运算符吗java

foreach能用三元运算符吗java

一:三元运算符

条件表达式 ? 取值1 :取值2

三元运算符是if else或者if else if else的简写形式,可以使代码看起来简洁些。

  1. private String ternary1(int first){
  2. System.out.println("===============================================================================================================");
  3. System.out.println("====三元运算符:if else的模式=====");
  4. System.out.println("====first=1时返回已售; =====");
  5. System.out.println("====first!=1时返回未售; =====");
  6. String str=first==1?"已售":"未售";
  7. System.out.println("first="+first+",返回:"+str);
  8. return str;
  9. }
  10. private String ternary2(int first,int second){
  11. System.out.println("===============================================================================================================");
  12. System.out.println("====三元运算符:if else if else的模式=====");
  13. System.out.println("====first=1,且second=1时返回 再售; =====");
  14. System.out.println("====first=1,且second!=1时返回 已售; =====");
  15. System.out.println("====其它情况时返回 未售; =====");
  16. String str=first==1?(second==1?"再售":"已售"):"未售";
  17. System.out.println("first="+first+",second="+second+",返回:"+str);
  18. return str;
  19. }

二:foreach操作   for(集合中元素的类型或者数组中元素的类型   表示元素的变量 :  数组或者集合的变量或者表达式){}

java在jdk1.5中开始支持foreach循环,foreach在一定程度上简化了对数组、集合的遍历。

  1. 需要使用索引的地方还是需要用for循环。
  2. foreach只能遍历实现了Iterable接口的集合,例如Collection集合,不能直接遍历Map集合,可以通过遍历map.entrySet遍历Map集合。
  3. 在用foreach循环遍历一个集合时不能向集合中增加元素,不能从集合中删除元素,否则会抛出ConcurrentModificationException异常。
  4. 遍历LinkedList时,foreach遍历的效率高些,在遍历数组和其它集合时二者效率相当。
  5. foreach是一个语法糖(就是通过编译器或者其它手段优化了代码,给使用带来了便利)。foreach在处理集合时,实际上通过迭代器进行处理的(如下所示),在处理数组是是通过普通的for循环处理的。
  1. Iterator<String> iterator=collection.iterator();
  2. while(iterator.hasNext()){
  3. System.out.println("迭代=="+iterator.next());
  4. }

三:java8中配合lambda表达式的forEach

  1. collection.forEach(s -> {
  2. System.out.println(s);
  3. });

自定义Consumer<T>类进行迭代

  1. private class MyConsumer implements Consumer<Object>{
  2. @Override
  3. public void accept(Object o) {
  4. System.out.println("打印输出(动作执行的参数):" + o);
  5. }
  6. }
  7. private void forEach6(){
  8. System.out.println("============遍历ArrayList java8 foreach方法============================");
  9. Collection<String> collection=new ArrayList<>(5);
  10. for (int i = 0; i <5 ; i++) {
  11. ((ArrayList<String>) collection).add(i,(i+1)+"");
  12. }
  13. collection.forEach(new MyConsumer());
  14. }

对Map集合的遍历如下所示:

  1. private void forEach7(){
  2. System.out.println("============遍历HashMap,不能直接遍历Map============================");
  3. Map<String,String> map=new HashMap<>(5);
  4. for (int i = 0; i <5 ; i++) {
  5. map.put(i+"",i+1+"");
  6. }
  7. System.out.println("普通方法遍历Map");
  8. //其实是在遍历Set集合
  9. for (Map.Entry<String, String> entry : map.entrySet()) {
  10. System.out.println("key : " + entry.getKey() + " value : " + entry.getValue());
  11. }
  12. System.out.println("java8 lambda遍历Map");
  13. map.forEach((k,v)->{
  14. System.out.println("key:"+k+",value:"+v);
  15. });
  16. }


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/938899
推荐阅读
相关标签
  

闽ICP备14008679号