一、List泛型集合
为啥现在开发基本不用ArrayList和Hoshtable,主要是装箱和拆箱问题,影响j时间。
List泛型语法:
List<类型> 变量名=new 类型[]();
//创建泛型集合对象
List<string> list = new List<string>();
list.Add("我是第一个list");
list.AddRange(new string[] { "我是第二", "我是第三", "我是第四" });
string[] vs = list.ToArray();//转集合转换为数组
//将数组转换为集合
char[] c = new char[] { 'a', 'b', 'c' };
List <char> lc= c.ToList();
二、字典类型
创建对象
Dictionary<key类型,value类型> dc=new Dictionary<key类型,值类型>():
//字典集合
Dictionary<int,string> dic = new Dictionary<int,string>();
dic.Add(1, "我是第一个");
dic.Add(2, "我是第二个");
dic.Add(3, "我是第三个");
//遍历
foreach(KeyValuePair<int,string> kvp in dic)
{
Console.WriteLine(kvp.Key+" "+ kvp.Value);
}
//统计一个字符串中各字符出现的次数,忽略大小写
string str = "You are Welcome!How are you,I am fine.";
Dictionary<char, int> map2 = new Dictionary<char, int>();
char[] vs1 = str.ToArray();
for (int q = 0; q < vs1.Length; q++)
{
try { map2.Add(vs1[q], 1); }
catch { map2[vs1[q]]++; }
}
foreach (KeyValuePair<char, int> pair in map2)
{
Console.WriteLine("字母{0}出现了{1}次", pair.Key, pair.Value);
}
三、文件流FileStream(操作字节的,必须掌握)
//------FileStream 之读操作
//StreamReader streamReader = null;
//StreamWriter streamWriter = null;
//1.创建FileStream对象。
// FileStream file = new FileStream(@"D:\T100.txt", FileMode.OpenOrCreate, FileAccess.Read);
每次读取的字节数
//byte[] buffer = new byte[1024*1024*5];
返回本次实际读取到的有效字节数;
//int r=file.Read(buffer, 0, buffer.Length);
将字节数组中每一个元素按照指定的编码格式解码成字符串
//string s=Encoding.Default.GetString(buffer, 0, r);
关闭流
//file.Close();
释放占用资源
//file.Dispose();
//Console.WriteLine(s);
//Console.ReadKey();
//上面关闭流和释放资源只是为了演示为程 ,实际开发中我们会用using()方法来自动做这件事情
//下面结合using方法来使用FileStream的读与写操作
using (FileStream fileWrite = new FileStream(@"D:\2.txt", FileMode.OpenOrCreate, FileAccess.Write))
{
//每次读取的字节数
byte[] buffer = new byte[1024 * 1024 * 5];
string s=null;
using (FileStream file = new FileStream(@"D:\T100.txt", FileMode.OpenOrCreate, FileAccess.Read))
{
//返回本次实际读取到的有效字节数;
int r = file.Read(buffer, 0, buffer.Length);
//将字节数组中每一个元素按照指定的编码格式解码成字符串
s = Encoding.Default.GetString(buffer, 0, r);
}
//将读到的字符串转成字节数组
byte[] bufferWrite = Encoding.Default.GetBytes(s);
//写入
fileWrite.Write(bufferWrite, 0, bufferWrite.Length);
}
=======================================================
四、 StreamReader和StreamWrite(操作字符的)
//StreamReader读取文件,参数写路径以及读取编码格式
using (StreamReader sr = new StreamReader(@"D:\T100.txt",Encoding.Default))
{
//StreamWriter,指定保存路径,加参数false是覆盖,加true是追加写入
using(StreamWriter sw = new StreamWriter(@"D:\T200.txt",true))
{
/*
//EndOfStream是判断是否到了文件尾。
while (!sr.EndOfStream)
{
//ReadLine是一行一行读取
string line = sr.ReadLine()+"\r\n";
sw.Write(line);
}
Console.WriteLine("写入完成");
*/
//对于小文件复制可以选用以下方法,大文件不采用,会比较占内存
string str=sr.ReadToEnd();
sw.Write(str);
Console.WriteLine("写入完成");
}
}
五、BinaryWriter、 BinaryReader 类:写入读取二进制数据
class Program
{
static void Main(string[] args)
{
FileStream fileStream = new FileStream(@"D:\\code\\test.txt", FileMode.Open, FileAccess.Write);
//创建二进制写入流的实例
BinaryWriter binaryWriter = new BinaryWriter(fileStream);
//向文件中写入图书名称
binaryWriter.Write("C#基础教程");
//向文件中写入图书价格
binaryWriter.Write(49.5);
//清除缓冲区的内容,将缓冲区中的内容写入到文件中
binaryWriter.Flush();
//关闭二进制流
binaryWriter.Close();
//关闭文件流
fileStream.Close();
fileStream = new FileStream(@"D:\\code\\test.txt", FileMode.Open, FileAccess.Read);
//创建二进制读取流的实例
BinaryReader binaryReader = new BinaryReader(fileStream);
//输出图书名称
Console.WriteLine(binaryReader.ReadString());
//输出图书价格
Console.WriteLine(binaryReader.ReadDouble());
//关闭二进制读取流
binaryReader.Close();
//关闭文件流
fileStream.Close();
}
}