I/O流与集合的认识

一.I/O流

Java中流的四大基类(超类)

 

输入流

输出流

字节流

inputstream

outputstream

字符流

Reader

Writer

 

操作流:

    读进来:进来,说明使用输入流,读是输入流中的一个方法(read)

    写出去:  出去,说明使用输出流,写是输出流中的一个方法(write)

 

在java中,如果程序暴露出来的仅仅是一个Inputstream/Outputstream,此时使用字节转换字符流

InputStream ——>InputstreamReader :  字节输入流——>字符输入流

OutputStream——>OutputstreamReader :字节输出流——>字符输出流

 

文件的字符流:

     文件的字节流:每次操作的单位都是一个字节(byte)

     文件的字符流:每次操作的单位都是一个字符(char)

   若文章中存在中文,则建议使用字符流,任何情况下都可以使用字节流,但操作二进制文件的时候只能用字节流。

注:所有的流在使用完毕都必须关闭。

下面给一个文件拷贝的案例:

public class Test {
	 public static void main(String[] args)throws IOException {
		    //1.创建源和目标
		    File  src = new File("E:/src");
		    File  dest= new File("E:/dest");
		    //2.创建输入输出流对象(管道)
		    InputStream in = new FileInputStream(src);
		    OutputStream out = new FileOutputStream(dest);
		    byte[] bytes = new byte[5];
		    //3.返回-1表示文件已读取完
		    int len = -1;
		    //4.读进来
		    while((len = in.read(bytes)) != -1) {
		    //5.写出去
		    	out.write(bytes, 0, len);
		    }
		    //6.关闭流对象
		    in.close();
		    out.close();
	    }
}

二.集合

 

ArrayList:有序重复,基于数组的集合类,变长数组,vector是ArrayList的前身。(多用于查询)

        遍历集合  for( int  i=0 : i<list.size();  i++){

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

                  }

LinkedList:有序重复,双向链表,底层使用的是链表(多用于插入,删除)

HashSet:无序不重复

LinkdHashSet:有序不重复

TreeSet:自然排序,底层采用红黑树算法

  1. 自然排序:调用集合元素的compareTo()来比较元素的大小的,然后按照元素的升序排序从小到大。要想排序,需要事先comparable接口重写compareTo方法,再该方法里编写自己的排序规则,比较当前你this对象和参数对象的数据
          
  2. 定制排序:在TreeSet构造器中传递java.lang.comparator对象,并覆盖compare(),再编写比较规则。

 

 
 

Map集合中的常用类:

     HashMap:采用哈希算法,无序不重复

     TreeMap:采用红黑树算法,自然排序不重复

     LinkedHashMap:有序不重复

   

注:一般情况下,定义Map集合时,key都使用String类型(不可变),把key作为value的唯一名称HashMap,LinkedHashMap,TreeMap都是线程不安全的,但性能高。

 

 

List     Map   Set之间的相互转换

  1.  List  list = new ArrayList();
     
    //将list转换为set
    Set  set = new HashSet(list);
    //将set转换为list
    list =  new ArrayList(set);
     
    Map不可以直接转换为list或set集合,但可以将map间接的转换为set或list
    ——>set  使用   map.keyset()
    ——>list  使用   map.values()
    集合工具类(Collection接口和Collections类)
  1. Arrays:
    把集合转换为数组
           Object[] arr = 集合对象.toArray();
    把数组转换为集合
            List list= Arrays.asList(“A”,”B”,”C”);
  2. Collections:封装了set,list,map的操作工具方法

 

猜你喜欢

转载自blog.csdn.net/xiaojinsanMM/article/details/81172789