Java基础整理

一、Java中的遍历    

1、在java开发中会碰到遍历List删除其中多个元素的情况,如果使用一般的for循环以及增强的for循环,代码会抛出异常ConcurrentModificationException。

(1)一般的for循环

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

      if(list.get(i).equals("example")){

         list.remove(i);

      }

   }

 

(2)增强for循环

   for(String str:list){

      if(str.equals("example")){

         list.remove(str);

      }

   }

 

(3)iterator遍历【只有这种情况可以在遍历的同时删除,注意在循环内部iterator.next()不要重复调用否则会报错】

   Iterator<String> iterator = list.iterator();

   while(iterator.hasNext()){

      String x = iterator.next();

      if(x.equals("example")){

          iterator.remove();

      }

   }

 

 

二、HashMap的顺序问题

    HashMap本身是无序状态,所以使用Iterator读取到的顺序不一定是写入的顺序,如果要保证顺序,需要使用LinkedHashMap

 

三、使用String.split("正则表达式")

    如果直接使用“|”来进行分割字符串,会导致字符串按照正则表达式来切割,导致字符串被分隔为一个个的字符。这时需要使用“\\|”来实现愿意。

 

四、Java中java.util.Date相关知识整理

1、java.util.Date的after和before、equal

    public boolean after(Date when):当且仅当此 Date 对象表示的瞬间比 when 表示的瞬间晚,才返回 true;否则返回 false。

    public boolean before(Date when):当且仅当此 Date 对象表示的瞬间比 when 表示的瞬间早,才返回 true;否则返回 false。

    public boolean equals(Object obj):比较两个日期的相等性。当且仅当参数不为 null,并且是一个表示与此对象相同的时间点(到毫秒)的 Date 对象时,结果才为 true。因此,当且仅当 getTime 方法对于两个 Date 对象返回相同的 long 值时,这两个对象才是相等的。

 

 五、java中replace和replaceAll的区别

1、replace的参数是char和CharSequence,既可以支持字符替换,也可以支持字符串替换。
2、replaceall参数是regex, replacement,regex表示是正则表达式。
 
六、java.io中File类的list()和listFiles()方法
1、File类的list()方法返回的是一个String[],其中包括所有文件的名字。
2、而listFiles()方法返回一个File[],其中包含整个文件夹下的File对象。
3、用户可以实现FilenameFilter接口来实现对文件列表的过滤:
class HtmlFileFilter implements FilenameFilter {
        @Override
        public boolean accept(File dir, String name) {
            // TODO Auto-generated method stub
            if (name.endsWith(".html"))
                return true;
            return false;
        }
    }

 

public void test() {
        File file = new File("E:/files");
        String[] list = file.list(new HtmlFileFilter());
        System.out.println("HTML类型的文件有:");
        for (String f : list) {
            System.out.println(f);
        }
    }

 同时你也可以使用匿名的内部类来实现文件过滤的功能,简化代码:

import java.io.File;
import java.io.FilenameFilter;

public class TestFile {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        File file = new File("E:/files");
        String[] list = file.list(new FilenameFilter() {
            @Override
            public boolean accept(File dir, String name) {
                // TODO Auto-generated method stub
                if (name.endsWith(".html"))
                    return true;
                return false;
            }
        });
        System.out.println("HTML类型的文件有:");
        for (String f : list) {
            System.out.println(f);
        }
    }

}

 

posted on 2018-10-16 17:30  Mrnx  阅读(238)  评论(0编辑  收藏  举报