程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> ObjectC----字典類和集合類以及快速枚舉和OC中的數組排序

ObjectC----字典類和集合類以及快速枚舉和OC中的數組排序

編輯:關於C語言

ObjectC----字典類和集合類以及快速枚舉和OC中的數組排序


 

 

 

// 不可變字典

// 字典是適用於存放鍵值對的一種集合,裡面的元素必須是對象類型

 

// 字典是無序的

 

// 字典賦值

NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"guozai",@"name",@"nan",@"sex",@"14",@"age" ,nil];

// 直接打印字典名就可以

NSLog(@"%@",dic);

 

// 取出來的鍵值都用NSString* 指向

NSString *age = [dic objectForKey:@"age"];

NSLog(@"%@",age);

NSString *nam = [dic objectForKey:@"name"];

NSLog(@"%@",nam);

// NSString * sex = [dic objectForKey:@"sex"];

NSLog(@"%@",[dic objectForKey:@"sex"]);

 

// 獲取所有的key值

NSArray * keys = [dic allKeys];

//直接打印數組名

NSLog(@"%@",keys);

 

// 獲取所有的value值

NSArray * objects = [dic allValues];

NSLog(@"%@",objects);

 

 

 

//=========================================================

// 可變字典

 

// 根據已有字典創建新字典

NSMutableDictionary *mulDic = [NSMutableDictionary dictionaryWithDictionary:dic];

 

// 添加鍵值對 score->100

[mulDic setObject:@"100" forKey:@"score"];

NSLog(@"%@",mulDic);

 

// 刪除鍵值對sex->nan

[mulDic removeObjectForKey:@"sex"];

NSLog(@"%@",mulDic);

 

// 修改鍵值對的值,其實就是添加的方法設置就行

[mulDic setObject:@"13" forKey:@"age"];

NSLog(@"%@",mulDic);

//================================================

// 遍歷字典

 

NSArray * allkeys = [mulDic allKeys];

for (int i = 0; i < [allkeys count]; i ++) {

// 獲取下標對應的key

NSString * key = [allkeys objectAtIndex:i];

// 根據key獲取value

NSString * value = [mulDic objectForKey:key];

NSLog(@"%@",value);

}

 

// 或則直接用allvalue方法取出所有value

NSArray * allValue = [mulDic allValues];

for (int i = 0; i < [mulDic count]; i ++) {

NSLog(@"%@",[allValue objectAtIndex:i]);

}

 

/*

1字典是適用於存放鍵值對的一種集合,裡面的元素必須是對象類型,

2字典裡面的key時唯一的,不能重復,但是value是可以重復的

3字典是一種無序集合,鍵值對順序不確定,可以將字典理解成“下標是字符串的數組”

4字典通過key去值,設置值,修改值.遍歷時,可以先便利所有的key,然後根據key值遍歷value,或者直接通過allvalue方法遍歷所有的值。

*/

 

 

//==============================================================

// NSSet 集合

 

// 使用便利構造器定義set

NSSet *set = [NSSet setWithObjects:@"guozai",@"zaigguo",@"guoguo", nil];

// 使用初始化方法定義set

NSSet *set2 = [[NSSet alloc]initWithObjects:@"guozai",@"zaiguo",@"guoguo", nil];

 

NSLog(@"%@,%@",set,set2);

 

// 獲取所有元素,並打印

NSArray * sets = [set allObjects];

NSLog(@"%@",sets);

 

for (int i = 0; i < [sets count]; i ++) {

NSLog(@"%@",[sets objectAtIndex:i]);

}

 

// 獲取set中任意一個元素

 

NSString *str = [set anyObject];// anyObject方法並不保證隨機,一般都是第一個 元素

NSLog(@"%@",str);

 

// 判斷集合中是否包含某個元素

BOOL re = [set containsObject:@"guozai"];

if (re) {

NSLog(@"baohan");

}

else {

NSLog(@"bubaohan");

}

 

//========================================================

// NSMutableSet

 

// 根據已有集合創建新的集合

NSMutableSet * mulSet = [NSMutableSet setWithSet:set];

 

// 添加元素

[mulSet addObject:@"zaizai"];

NSLog(@"%@",mulSet);

 

// 刪除元素

[mulSet removeObject:@"zaizai"];

NSLog(@"%@",mulSet);

 

// ===================================================

 

// NSCountedSet 是NSMutableSet的子類,可用來計算重復次數

NSCountedSet *countedSet = [NSCountedSet setWithSet:mulSet];

[countedSet addObject:@"guozai"];

NSUInteger count = [countedSet countForObject:@"guozai"];

NSLog(@"%ld",count);

 

// ===================================================

// 在使用快速枚舉遍歷集合中的元素時,不能對集合裡面的元素進行增刪操作,否則會崩潰

 

// 數組的快速枚舉

NSMutableArray * arr = [NSMutableArray arrayWithObjects:@"1",@"2",@"3", nil];

for (NSString *str in arr) {

NSLog(@"%@",str);

// 不能增刪

}

 

// 字典的快速枚舉

NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"guozai",@"name",@"man",@"sex",@"19",@"age", nil];

 

// 字典的快速枚舉遍歷字典時,遍歷的是字典的key;

for (NSString *str in dict) {

// NSString *value = [dict objectForKey:str];

// NSLog(@"%@",value);

NSLog(@"%@",str);// 打印出來的時key

}

 

// 集合的快速枚舉

NSMutableSet * mulSet2 = [NSMutableSet setWithObjects:@"1",@"2", nil];

for (NSString *str in mulSet2) {

NSLog(@"%@",str);

}

 

 

 

// =======================================================

 

// sortedArrayUsingSelector會創建一個新的數組,不會影響原數組的元素

// sortUsingSelector不會創建新的數組,而在原數組的基礎上調整元素的位置

 

 

// 比較方法的定義,比如下面compareByPrice方法在類中的定義

 

- (NSComparisonResult)compareByPrice:(Student1 *)stu

{

// 返回NSOrderedDescending==1才交換,返回其他兩個不交換

 

if (_price > [stu price]) {

return NSOrderedAscending;// ==-1

}

else if(_price == [stu price])

{

return NSOrderedSame;// ==0

}

else {

return NSOrderedDescending;

}

 

}


 

 

NSArray *sortedArray = [students sortedArrayUsingSelector:

@selector(compareByPrice:)];//小括號內是方法名

 

// 在原數組裡面排序用sortUsingSelector@selector()方法

 

for (Student1 * stu in sortedArray) {

NSLog(@"%@",stu);

}

 

 

// 第一步:在model類中定義比較方法

// 第二步: 給數組發送排序消息

// 默認是升序

================================================================================

NSLog的description方法的重定義,打印對象時實現自己想要的輸出

 

// 打印對象時,會調用對象的description方法

- (NSString *)description

{

 

NSString *str = [NSString stringWithFormat:@"name = %@,age = %d,score = %.2f",_name ,_age,_score];

return str;

}


 

 

 

 

 

 

 

 

 

 

 


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved