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