集合类List与Dictonary实例练习
集合类List与Dictonary实例练习
发布时间:2017-01-07 来源:查字典编辑
摘要:a、List泛型集合复制代码代码如下:ViewCodeusingSystem;usingSystem.Collections.Generic...

a、List<>泛型集合

复制代码 代码如下:

View Code

using System;

using System.Collections.Generic;

namespace _02_泛型集合 {

class Person {

public Person(string name, int age) {

this .name = name;

this .age = age;

}

private string name;

public string Name {

get {

return name;

}

set {

name = value ;

}

}

private int age;

public int Age {

get {

return age;

}

set {

age = value ;

}

}

}

class Student : Person {

public Student(string name, int age)

: base (name, age) {

}

}

class Teacher : Person {

public Teacher(string name, int age)

: base (name, age) {

}

}

class Program {

static void Main( string[] args) {

Student xyy = new Student( "小月月" , 12);

Student fj = new Student( "凤姐" , 14);

Student fr = new Student( "芙蓉姐姐" , 16);

Student xl = new Student( "犀利哥" , 18);

List <Student > student = new List <Student >();

student.Add(xyy);

student.Add(fj);

student.Add(fr);

student.Add(xl);

Teacher tea = new Teacher( "wanghao" , 21);

//student.Add(tea);//因为List<Student> 限制类型必须为Student 所以不能添加Teacher对象

//比ArrayList更加限制存储的类型 而且效率要高 因为添加 取出对象是不会发生装箱 拆箱的操作的

//遍历

foreach (Student item in student) {

Console .WriteLine(item.Name);//因为返回的就是student对象 所以可以直接读取属性值

Console .WriteLine(item.Age);

}

//移除

student.Remove(xyy); //移除的是引用地址 所以下面移除的s不是xyy

Student s = new Student( "小月月" , 12);

student.Remove(s);

student.RemoveAt(0);

student.RemoveRange(0, 2); //从0索引移除后面两位 即前移除前两位学生 xyy fj

//student.RemoveAll();//移除所有满足条件的 详见帮助文档

student.Clear();

Console .WriteLine(student.Contains(xyy));

//ToArray()方法 转换学生类型数组

Student [] stu = student.ToArray();

foreach (Student item in stu) {

Console .WriteLine(item.Name);

}

Console .Read();

}

}

}

b、Dictonary<>字典

复制代码 代码如下:

View Code

using System;

using System.Collections.Generic;

namespace _03_泛型集合 {

class Student {

public Student(string name, int age) {

this .name = name;

this .age = age;

}

private string name;

public string Name {

get {

return name;

}

set {

name = value ;

}

}

private int age;

public int Age {

get {

return age;

}

set {

age = value ;

}

}

}

class Program {

static void Main( string[] args) {

Student xyy = new Student( "小月月" , 12);

Student fj = new Student( "凤姐" , 14);

Student fr = new Student( "芙蓉姐姐" , 16);

Student xl = new Student( "犀利哥" , 18);

Dictionary <string , Student> student = new Dictionary < string, Student >();//key为string类型的name value为Student对象

student.Add( "小月月" , xyy);

student.Add( "凤姐" , fj);

student.Add( "芙蓉姐姐" , fr);

student.Add( "犀利哥" , xl);

Console .WriteLine(student["犀利哥" ].Name); //根据key获取value

//遍历 通过key

foreach (string item in student.Keys) {

Console .WriteLine(item);

Console .WriteLine(student[item].Age);

}

//遍历 通过value

foreach (Student item in student.Values) {

Console .WriteLine(item.Age);

}

//遍历键值对

foreach (KeyValuePair < string, Student > item in student) {

Console .WriteLine(item.Key);

Console .WriteLine(item.Value.Age);//item.Value是Student对象 直接使用

}

//移除

//student.Remove("小月月");

//student.Clear();

student.ContainsKey( "小月月" ); //是否包含该key

//更多参见帮助文档

Console .Read();

}

}

}

c、泛型集合练习

复制代码 代码如下:

View Code

using System;

using System.Collections.Generic;

namespace _04__泛型练习 {

class Program {

static void Main( string[] args) {

//把分拣奇偶数的程序用泛型实现

string str = "7 4 3 2 9 8 33 22" ;

string [] strs = str.Split(' ' );

strs = Getevent(strs).ToArray();

string res = string .Join( " ", strs); //string数组 直接用join就好了

Console .WriteLine(res);

//将int数组中的奇数放到一个新的int数组中返回

int [] intarr = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };

List <int > list = new List <int >();

foreach (int item in intarr) {

if (item % 2 != 0) {

list.Add(item);

}

}

intarr = list.ToArray();

foreach (int item in intarr) {

Console .WriteLine(item);

}

//从一个整数的List<int>中取出最大数。不使用自身带的Max()方法。

List <int > list2 = new List <int > { 1, 2, 3, 4, 5, 6, 7, 8 };

int max = list2[0];

foreach (int item in list2) {

if (item > max) {

max = item;

}

}

Console .WriteLine("泛型集合最大值为{0}" , max);

Console .ReadKey();

}

public static List< string > Getevent(string [] str) {

List <string > list = new List <string >();

List <string > list2 = new List <string >();

foreach (string item in str) {

if (int .Parse(item) % 2 != 0) {

list.Add(item);

} else {

list2.Add(item);

}

}

list.AddRange(list2);

return list;

}

}

}

d、泛型集合练习2

复制代码 代码如下:

View Code

using System;

using System.Collections.Generic;

namespace _06_泛型集合练习 {

class Program {

static void Main( string[] args) {

//把1,2,3转换为壹贰叁

string str = "1壹 2贰 3叁 4肆 5伍 6陆 7柒 8捌 9玖 0零" ;

Dictionary <char , char> money = new Dictionary < char, char >();

string [] strs = str.Split(' ' );

string s = "123456789" ;

string news = "" ;

for (int i = 0; i < strs.Length; i++) {

money.Add(strs[i][0], strs[i][1]);

}

foreach (char item in s) {

news += money[item];

}

Console .WriteLine(news);

char n = '1' ;

Console .WriteLine(n + ' ' ); //结果显示为81 char字符相加是把其Asic码相加的

Console .WriteLine(n + 2);//结果显示为51

//如果想实现字符串相加就把任一个参数改变为tostring输出

Console .WriteLine(n.ToString() + 2);//显示为12

//计算字符串中每种字符出现的次数(面试题)。“Welcome to Chinaworld”,不区分大小写,打印“W 2” “e 2” “o 3”……

string str2 = "Welcome to Chinaworld" ;

Dictionary <char , int> num = new Dictionary < char, int >();

foreach (char item in str2.ToLower().Replace( " " , "" )) {

if (num.ContainsKey(item)) {

num[item]++;

} else {

num.Add(item, 1);

}

}

foreach (var key in num.Keys) {

Console .WriteLine(""{0}{1}"" , key, num[key]);

}

//编写一个函数进行日期转换,将输入的中文日期转换为阿拉伯数字日期,比如:二零一二年十二月月二十一日要转换为2012-12-21。

string date = "二零一二年十二月二十一日" ; //date2的转换 需要考虑十左右字符是否都在字典中 在则为 则十消失 如果左边不在右边在则变1 如果左边在右边不在则变0 如果左右都不在则变10 还是蛮复杂的

//string date = "二零一二年二月二一日";

string strNumb = "一1 二2 三3 四4 五5 六6 七7 八8 九9 零0" ;

string [] strNumbs = strNumb.Split(' ' );

string nullYear = "" ;

Dictionary <char , char> years = new Dictionary < char, char >();

for (int i = 0; i < strNumbs.Length; i++) {

years.Add(strNumbs[i][0], strNumbs[i][1]);

}

//years.Add('年', '-');

//years.Add('月', '-');

for (int i = 0; i < date.Length; i++) {

if (years.ContainsKey(date[i])) {

nullYear += years[date[i]];

} else if (date[i] == '年' || date[i] == '月' ) {

nullYear += '-' ;

} else if (date[i] == '十' && years.ContainsKey(date[i + 1]) && !years.ContainsKey(date[i - 1])) {

nullYear += '1' ;

} else if (date[i] == '十' && !years.ContainsKey(date[i + 1]) && years.ContainsKey(date[i - 1])) {

nullYear += '0' ;

} else if (date[i] == '十' && !years.ContainsKey(date[i + 1]) && !years.ContainsKey(date[i - 1])) {

nullYear += "10" ;

}

}

Console .WriteLine(nullYear);

Console .ReadKey();

}

}

}

e、泛型集合练习2中日期转换提取为方法

复制代码 代码如下:

View Code

using System;

using System.Collections.Generic;

namespace _07_日期Change {

class Program {

static string str = "一1 二2 三3 四4 五5 六6 七7 八8 九9 零0" ;

static string [] strs = str.Split( ' ');

static Dictionary < char, char > money = new Dictionary< char , char >();

static void Main( string[] args) {

for (int i = 0; i < strs.Length; i++) {

money.Add(strs[i][0], strs[i][1]);

}

//string date = "二零一二年二月二一日";

string date = "二零一二年二十月二十一日" ;

date = newstr(date);

string nullYear = "" ;

//money.Add('年', '-');

//money.Add('月', '-');

for (int i = 0; i < date.Length; i++) {

if (money.ContainsKey(date[i])) {

nullYear += money[date[i]];

} else if (date[i] == '年' || date[i] == '月' ) {

nullYear += '-' ;

}

}

Console .WriteLine(nullYear);

Console .WriteLine(date);//二零一二年一二月二一日

Console .ReadKey();

}

//十左右字符都在字典中 那么十消失 如果左边不在右边在则变1 如果左边在右边不在则变0 如果左右都不在则变10

public static string newstr( string str) {

string newstr = "" ;

for (int i = 0; i < str.Length; i++) {

if (str[i] == '十' ) {

bool left = money.ContainsKey(str[i - 1]);

bool right = money.ContainsKey(str[i + 1]);

if (left && right) {

newstr += "" ;

} else if (right) { //!left &&

newstr += "一" ;

} else if (left) { //&& !right

newstr += "零" ;

} else {//if (!left && !right)

newstr += "一零" ;

}

} else {

newstr += str[i];

}

}

return newstr;

}

}

}

f、泛型集合练习之翻译软件

复制代码 代码如下:

View Code

using System;

using System.Collections.Generic;

using System.IO;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace _05_翻译软件 {

public partial class Form1 : Form {

public Form1() {

InitializeComponent();

}

Dictionary <string , string> dic = new Dictionary < string, string >();

private void btnChange_Click( object sender, EventArgs e) {

if (dic.ContainsKey(txtEnglish.Text)) {

txtChina.Text = dic[txtEnglish.Text];

} else {

MessageBox .Show("请购买新的字典" );

}

}

private void Form1_Load( object sender, EventArgs e) {

string [] filecon = File .ReadAllLines( "英汉词典TXT格式.txt" , Encoding .Default);//格式遵循abandon v.抛弃,放弃

for (int i = 0; i < filecon.Count(); i++) {

string [] arr = filecon[i].Split(new char[] { ' ' }, StringSplitOptions .RemoveEmptyEntries);

if (!dic.ContainsKey(arr[0])) {

dic.Add(arr[0], arr[1]);

}

}

}

}

}

集合类List与Dictonary实例练习1

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新asp.net教程学习
热门asp.net教程学习
编程开发子分类