JAVA随笔3(集合框架,流)

Collection接口-->>add();remove;ifEmpty();size()

                             Set(静态不能实例)-->>无序不重复

                                                   HashSet 无序保证不重复

                                                   LinkedHashSet 和存储一样的排序

                                                    TreeSet 即树排序,根据比较后的值来排序,也可以创建比较器来自定义排序内部自己比较,1为正序,-1位逆序,0位无序

                                                   class ComparatorByName implements Comparator

                                             {

                                                                  public int compare(String s1,String s2)

                                                                   {  

                                                                               return 1,-1,0;  }

                                                 }

                                  List(不能实例)  -->>   set(index,element)修改数据 ;有序可重复List体系的都可以操作角标   toArray()集合转换为数组

                                                   ArrayList    非同步,

                                                   LinkedList   非同步addFirst();getFirst()获取但不移除列表的第一个元素;removeFirst()获取但移除列表的第一个元素;双向链表结构

                                                     Vector      同步

                                                    Stack

Map (不能实例) -->>键值对存储,即映射

                     put();clear();remove();containsKey();containsValue();isEmpty();get(key);size()键的个数

                    HashMap       

                    LinkedHashMap

                    TreeMap          底层原理为红黑树

                    HashTable -->>Properties集合 同步的

Collections接口-->>工具类,里面的方法都是静态的

                 sort();swap();binarySearch()只能对List其作用;reverseOrder(),reverse()List集合的反转

                       Arrays类

                                asList()数组转换为集合

                                 toString()数组的输出

迭代器:

Map的迭代有三种

将键和值放入Set集合中,以键迭代 Iterator it = ((Set)map.ksySet()).iterator()

以值迭代((Collection) map.valus()).iterator()

以键和值迭代 ((Set)<Map.Entry<element,element>>map.entrySet()).iterator()

Properties集合中的键和值都是字符串类型的集合中的数据可以保存到流中,或者从流中获取

Proprties p = new Properties();

p.setProperty()

Set<name> names = p.stringPropertyNames();取出所有元素

FileOutputStream fos = new FileOutputStream("File.txt");

p.store(fos,"name+age");为文件写入方法

f0s,close()

FileInputStream fis = new FileInputStream("File.txt");

p.load(fis);为读取配置文件的方法

fis.close()

BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(""),"utf-8"));

BufferedWriter bw = new BufferedWriter(new OutputStreamReader(new FileOutputStream(""),"utf-8"));

字节字符流的转换

Scoket流

UDP无连接传输,有时会数据丢失

TCP有连接传输,3次握手连接,4次握手分开。每次都是客户端先发送请求,最后服务端关闭

new DatagramSocket(10000).recieve(new DatagramPacket(new byte[],new byte[].length)()))  为阻塞式

阻塞式即为每个进程不停的轮询,CPU不停的线程切换;非阻塞式即给这些线程添加一个专门的管理线程,外部环境好了,这个线程就会告诉某个适合的进程,你可以去占用CPU了

new DatagramPacket().getAddress.getHostAddress()

getPort();getData()等方法获取客户端提交过来的数据包中的数据

new DatagramSocket().send(new DatagramSocket(str.getBytes(),0,str.getBytes().length(),InetAddress.getByName(IP),PORT));这是客户端

TCP:-->>

SERVER:-->>

Socket socket = new ServerSocket(10000).accept();

new ServerSocket(10000).accept().getInputStream()获取Socket读取流,可用缓冲区包装

new PrintWriter(socket.getOutputStream().true);获取socket的输出流,true很精髓,自动输出

Client:-->>

Socket socket = new Socket("Server_ip","PORT");

和服务端的差不多,需要客户端和服务端交互,互相确认对方是否收到数据。

服务端和客户端需要将数据写入文件夹中,这就用到了File对象

File:-->>

getName();getAbsolutePath();length();getPath();

mkdir();mkdirs()

exsits(),isFile(),isDirectory();判断boolean型

suffix后缀名implements FilenameFileter

listFile()返回某个目录下的所有文件和目录的绝对路径,File数组

list()返回某个目录下的所有文件和目录的文件名,String 数组

分割文件(控制缓冲区大小)与合并文件

 ArrayList<FileInputStream> al = new ArrayList<FileInputStream>();
        for(int i = 0; i<partfile.length;i++)
        {
            al.add(new FileInputStream(partfile[i]));
        }
        
   每一份文件都需要一个流关联,合并为一个流

Enumeration<FileInputStream> enums = Collections.enumeration(al);
SequenceInputStream sis = new SequenceInputStream(enums);

原文地址:https://www.cnblogs.com/GlazedCat/p/6539409.html