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);
        }
    }

}

 

转载于:https://www.cnblogs.com/mrnx2004/p/9799330.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值