前言

	@interface NSArray<__covariant ObjectType> : NSObject <NSCopying, NSMutableCopying, NSSecureCoding, NSFastEnumeration>
@interface NSMutableArray<ObjectType> : NSArray<ObjectType>
  • 数组只能存储 OC 对象,不能存储 C 语言中的基本数据类型,也不能存储 nil 。

  • Xcode 7 对系统中常用的一系列容器类型都增加了泛型支持(),有了泛型后就可以指定容器类中对象的类型了。假如向泛型容器中加入错误的对象,编译器会报警告。

    	__covariant:协变性,子类型可以强转到父类型(里氏替换原则)。
    __contravariant:逆变性,父类型可以强转到子类型。
  • 不指定泛型类型的对象可以和任意泛型类型转化,但指定了泛型类型后,两个不同类型间是不可以强转的,假如你希望主动控制转化关系,就需要使用泛型的协变性和逆变性修饰符。

1、不可变数组 NSArray 的创建

	// 直接创建不可变数组
/*
数组成员是 id 类型,表示数组元素可以是任意的 oc 对象。
*/
NSArray *arr1 = @[@"bei", @"jing", @"huan", @"ying", @"nin"]; // 对象方法创建 NSArray *arr2 = [[NSArray alloc] init]; // 和 arr1 的地址不相同
NSArray *arr3 = [[NSArray alloc] initWithArray:arr1]; NSArray *arr4 = [[NSArray alloc] initWithObjects:@"bei", @"jing", @"huan", @"ying", @"nin", nil]; // 类方法创建 NSArray *arr5 = [NSArray array]; // 和 arr1 的地址不相同
NSArray *arr6 = [NSArray arrayWithArray:arr1]; // 创建只有一个元素(id)的数组
NSArray *arr7 = [NSArray arrayWithObject:@"qian"]; NSArray *arr8 = [NSArray arrayWithObjects:@"bei", @"jing", @"huan", @"ying", @"nin", nil]; // 从 文件 创建字符串
NSString *path = [NSHomeDirectory() stringByAppendingString:@"/Desktop/test.txt"]; NSArray *arr9 = [[NSArray alloc] initWithContentsOfFile:path];
NSArray *arr10 = [NSArray arrayWithContentsOfFile:path]; // 从 Url 创建字符串
/*
file:// 文件前缀
*/
NSURL *url = [NSURL URLWithString:[@"file://" stringByAppendingString:[NSHomeDirectory()
stringByAppendingString:@"/Desktop/test.txt"]]]; NSArray *arr11 = [[NSArray alloc] initWithContentsOfURL:url];
NSArray *arr12 = [NSArray arrayWithContentsOfURL:url]; // 泛型定义 // 指明数组中存放的是 NSString 类型数据
NSArray<NSString *> *arr13 = @[@"bei", @"jing", @"huan", @"ying", @"nin"]; // 指明数组中存放的是 NSNumber 类型数据
NSArray<NSNumber *> *arr14 = @[@2, @4, @6, @8, @10];

2、数组成员个数计算

	NSArray *arr = @[@"bei", @"jing", @"huan", @"ying", @"nin"];

	NSUInteger length = [arr count];

3、从数组中取成员

	NSArray *arr = @[@"bei", @"jing", @"huan", @"ying", @"nin"];

	// []
NSArray *arr1 = arr[1]; // objectAtIndex
NSArray *arr2 = [arr objectAtIndex:2]; // subarrayWithRange
NSArray *arr3 = [arr subarrayWithRange:NSMakeRange(2, 2)]; // for...in 循环
/*
取出数组中的每个元素,分别保存在 tmp 中
*/
for (NSString *tmp in arr) { NSLog(@"%@", tmp);
} // id (void *) 泛型指针, 取出数组中的每个元素,分别保存在 tmp 中
for (id tmp in arr) { NSLog(@"tmp = %@", tmp);
}

4、取数组中最后一个元素

	NSArray *arr = @[@"bei", @"jing", @"huan", @"ying", @"nin"];

	id lastObject1 = [arr lastObject];

	id lastObject2 = arr[[arr count]-1];

5、由元素的值获取下标

	NSArray *arr = @[@"bei", @"jing", @"huan", @"ying", @"nin"];

	NSUInteger index = [arr indexOfObject:@"huan"];

6、判断数组中是否包含某个元素

	NSArray *arr = @[@"bei", @"jing", @"huan", @"ying", @"nin"];

	BOOL result = [arr containsObject:@"huan"];

7、数组的比较

	NSArray *arr1 = @[@"bei", @"jing", @"huan", @"ying", @"nin"];
NSArray *arr2 = @[@"ni", @"hao", @"bei", @"jing"]; // isEqualToArray // 比较两个数组内容是否相同
BOOL bl = [arr1 isEqualToArray:arr2]; // firstObjectCommonWithArray // 返回两个数组中第一个相同的元素
NSString *str = [arr1 firstObjectCommonWithArray:arr2];

8、数组组合

	NSArray *arr1 = @[@"bei", @"jing", @"huan", @"ying", @"nin"];
NSArray *arr2 = @[@"Users", @"JHQ0228", @"Desktop"]; // 按指定字符组合
NSString *str1 = [arr1 componentsJoinedByString:@" "]; // 按路径组合
/*
将数组中的元素自动组合成路径,在每个元素之间自动加上 “/”
*/
NSString *str2 = [NSString pathWithComponents:arr2];

9、可变数组 NSMutableArray 的创建

	// 对象方法创建
/*
创建指定长度的数组,预先分配空间,提高效率,实际长度可大于指定长度
*/
NSMutableArray *arr1 = [[NSMutableArray alloc] initWithCapacity:0]; // 类方法创建
/*
创建指定长度的数组,预先分配空间,提高效率,实际长度可大于指定长度
*/
NSMutableArray *arr2 = [NSMutableArray arrayWithCapacity:0];

10、数组元素的添加

	NSMutableArray *arr = [NSMutableArray arrayWithCapacity:0];

	// addObject

		// 向数组中追加一个元素
[arr addObject:@"bei"]; // addObjectsFromArray // 追加数组
NSArray *arrAdd = @[@"dian", @"ying", @"xue", @"yuan"];
[arr addObjectsFromArray:arrAdd]; // insertObject... atIndex // 在数组中任意位置插入一个元素
[arr insertObject:@"hao" atIndex:2]; // arrayByAddingObject // 向数组添加一个元素,返回一个新的数组
NSArray *arr1 = [arr arrayByAddingObject:@"ma"];

11、数组元素的删除

	NSMutableArray *arr = [NSMutableArray arrayWithObjects:@"nan", @"jing", @"huan", @"ying",
@"nin", @"bei", @"jing", @"ni", @"hao", nil]; // 删除指定下标的元素
[arr removeObjectAtIndex:2]; // 删除指定元素,删除所有指定元素
[arr removeObject:@"ying"]; // 删除指定元素
[arr removeObjectIdenticalTo:@"nan"]; // 删除指定范围的元素
NSRange range = {2,1};
[arr removeObjectsInRange:range]; // 删除最后一个元素
[arr removeLastObject]; // 删除所有元素
[arr removeAllObjects];

12、数组元素的替换

	NSMutableArray *arr = [NSMutableArray arrayWithObjects:@"nan", @"jing", @"hao", nil];

	// 替换指定下标元素
[arr replaceObjectAtIndex:1 withObject:@"ren"];

13、数组元素的交换

	NSMutableArray *arr = [NSMutableArray arrayWithObjects:@"bei", @"jing", @"nin", @"hao", nil];

	[arr exchangeObjectAtIndex:0 withObjectAtIndex:1];

14、数组元素的修改

	NSMutableArray *arr = [NSMutableArray arrayWithObjects:@"bei", @"jing", @"nin", @"hao", nil];

	// 修改整个数组(覆盖重写)
[arr setArray:@[@"bei", @"jing", @"huan", @"ying", @"nin"]]; // 修改数组中的某个元素
arr[3] = @"huan";

15、给数组里的所有元素发送一个消息

	Student *stu1 = [[Student alloc] init];
Student *stu2 = [[Student alloc] init];
Student *stu3 = [[Student alloc] init]; NSArray *arr = [NSArray arrayWithObjects:stu1, stu2, stu3, nil]; // 发送消息
[arr makeObjectsPerformSelector:@selector(studentTest)];

16、数组的遍历

  • 用 for 循环遍历

    	NSArray * array = [NSArray arrayWithObjects:@"bei", @"jing", @"huan", @"ying", @"nin", nil];
    
    	for (int i = 0; i < [array count]; i ++) {
    
    		NSLog(@"%@", array[i]);
    }
  • 用 for...in 循环遍历

    	NSArray *array = [NSArray arrayWithObjects:@"bei", @"jing", @"huan", @"ying", @"nin", nil];
    
    	// id (void *) 泛型指针, 取出数组中的每个元素,分别保存在 tmp 中
    for (id tmp in array) { NSLog(@"%@", tmp);
    } // 取出数组中的每个元素,分别保存在 tmp 中
    for (NSString *tmp in array) { NSLog(@"%@", tmp);
    }
  • 用 block 循环遍历

    	NSArray *array = [NSArray arrayWithObjects:@"bei", @"jing", @"huan", @"ying", @"nin", nil];
    
    	[array enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
    
    		// obj == array[i],idx == i
    NSLog(@"%@", obj); if ([obj isEqual: @"huan"]) { // 停止遍历
    *stop = YES;
    }
    }];
  • 用迭代器遍历

    	NSArray *array = [NSArray arrayWithObjects:@"bei", @"jing", @"huan", @"ying", @"nin", nil];
    
    	// 获取数组的正序迭代器
    NSEnumerator *enu1 = [array objectEnumerator]; // 获取数组的反序迭代器
    NSEnumerator *enu2 = [array reverseObjectEnumerator]; id obj = nil; // 正序,获取下一个需要遍历的元素
    while (obj = [enu1 nextObject]) { NSLog(@"%@", obj);
    } // 反序,获取下一个需要遍历的元素
    while (obj = [enu2 nextObject]) { NSLog(@"%@", obj);
    }
  • 条件遍历

    	// 1.indexesOfObjectsPassingTest
    
    		NSArray *array = [NSArray arrayWithObjects:@3, @8, @17, @2, @25, @6, @89, nil];
    
    		NSIndexSet *indexSet = [array indexesOfObjectsPassingTest:^BOOL(id  _Nonnull obj,
    NSUInteger idx,
    BOOL * _Nonnull stop) { // 遍历数组,找出数组中所有大于 10 的元素的位置
    return [obj intValue] > 10 ? : NO;
    }]; [indexSet enumerateIndexesUsingBlock:^(NSUInteger idx, BOOL * _Nonnull stop) { // 输出所有大于 10 的元素值
    NSLog(@"%@", array[idx]);
    }]; // 2.indexOfObjectPassingTest NSUInteger index = [array indexOfObjectPassingTest:^BOOL(id _Nonnull obj,
    NSUInteger idx,
    BOOL * _Nonnull stop) { // 遍历数组,找出数组中第一个大于 10 的元素的位置
    return [obj intValue] > 10 ? : NO;
    }]; // 输出第一个大于 10 的元素值
    NSLog(@"%@", array[index]);

17、数组排序

  • 冒泡排序

    	NSMutableArray *arr = [NSMutableArray arrayWithObjects:@"sunday", @"sunny", @"summer", @"sun", nil];
    
    	for (int i = 0; i < [arr count] - 1; i++) {
    for (int j = 0; j < [arr count] - 1 - i; j++) { // 大小判断 arr[j] > arr[j + 1]
    if ([arr[j] compare:arr[j + 1]] == NSOrderedDescending) { // 位置交换
    [arr exchangeObjectAtIndex:j withObjectAtIndex:(j + 1)];
    }
    }
    }
  • 用指定的方法排序

    	// 1.用指定的方法排序,可变数组排序
    
    		NSMutableArray *arr1 = [NSMutableArray arrayWithObjects:@"sunday", @"sunny", @"summer", @"sun", nil];
    
    		// 原数组的顺序改变,指定元素的比较方法:compare:,默认排序方式为升序排列
    [arr1 sortUsingSelector:@selector(compare:)]; // 使排序结果 降序 排列
    NSEnumerator *enu = [arr1 reverseObjectEnumerator]; id obj = nil;
    while (obj = [enu nextObject]) { // 排序后的结果为降序
    NSLog(@"%@", obj);
    } // 2.用指定的方法排序,不可变数组排序 NSArray *arr2 = [NSArray arrayWithObjects:@"sunday", @"sunny", @"summer", @"sun", nil]; // 返回一个排好的数组,原数组的顺序不变,指定元素的比较方法:compare:
    NSArray *arr3 = [arr2 sortedArrayUsingSelector:@selector(compare:)]; // 3.用指定的方法排序,自定义类 // People.h #import <Foundation/Foundation.h> @interface People : NSObject // 名
    @property (nonatomic, retain) NSString *firstname; // 姓
    @property (nonatomic, retain) NSString *lastname; + (id)peopleWithFirstname:(NSString *)firstname lastname:(NSString *)lastname; // 返回值类型为 NSComparisonResult
    - (NSComparisonResult)comparePeople:(People *)peop; @end // People.m #import "People.h" @implementation People + (id)peopleWithFirstname:(NSString *)firstname lastname:(NSString *)lastname {
    People * peop = [[People alloc] init]; peop.lastname = lastname;
    peop.firstname = firstname; return peop;
    } - (NSComparisonResult)comparePeople:(People *)peop { // 先按照姓排序
    NSComparisonResult result = [self.lastname compare: peop.lastname]; if (result == NSOrderedSame) { // 如果有相同的姓,就比较名字
    result = [self.firstname compare: peop.firstname];
    } return result;
    } -(NSString *)description{ return [NSString stringWithFormat:@"%@ %@", self.firstname, self.lastname];
    } @end // main.m #import "People.h" People *peop1 = [People peopleWithFirstname:@"MingJie" lastname:@"Li"];
    People *peop2 = [People peopleWithFirstname:@"LongHu" lastname:@"Huang"];
    People *peop3 = [People peopleWithFirstname:@"LianJie" lastname:@"Li"];
    People *peop4 = [People peopleWithFirstname:@"Jian" lastname:@"Xiao"]; // 1.用指定的方法排序,可变数组排序 NSMutableArray *array1 = [NSMutableArray arrayWithObjects:peop1, peop2, peop3, peop4, nil]; // 原数组的顺序改变
    [array1 sortUsingSelector:@selector(comparePeople:)]; // 2.用指定的方法排序,不可变数组排序 NSArray *array2 = [NSArray arrayWithObjects:peop1, peop2, peop3, peop4, nil]; // 返回一个排好的数组,原数组的顺序不变
    NSArray *array3 = [array2 sortedArrayUsingSelector:@selector(comparePeople:)];
  • 用 Block 排序

    	// 1.利用 block 进行排序,可变数组排序
    
    		NSMutableArray *arr1 = [NSMutableArray arrayWithObjects:@"sunday", @"sunny", @"summer", @"sun", nil];
    
    		[arr1 sortUsingComparator:^NSComparisonResult(id  _Nonnull obj1, id  _Nonnull obj2) {
    
    			// 指定比较的方法,两个元素值比较
    NSComparisonResult result = [obj1 compare:obj2]; // 返回比较的结果
    return result;
    }]; // 2.利用 block 进行排序,不可变数组排序 NSArray *arr2 = [NSArray arrayWithObjects:@"sunday", @"sunny", @"summer", @"sun", nil]; // 返回一个排好的数组
    NSArray *arr3 = [arr2 sortedArrayUsingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) { // 指定比较的方法,两个元素值比较
    NSComparisonResult result = [obj1 compare:obj2]; // 返回比较的结果
    return result;
    }]; // 3.利用 block 进行排序,自定义类 // People1.h #import <Foundation/Foundation.h> @interface People1 : NSObject // 名
    @property (nonatomic, retain) NSString *firstname; // 姓
    @property (nonatomic, retain) NSString *lastname; + (id)peopleWithFirstname:(NSString *)firstname lastname:(NSString *)lastname; @end // People1.m #import "People1.h” @implementation People1 + (id)peopleWithFirstname:(NSString *)firstname lastname:(NSString *)lastname {
    People1 * peop = [[People1 alloc] init]; peop.lastname = lastname;
    peop.firstname = firstname; return peop;
    } -(NSString *)description{ return [NSString stringWithFormat:@"%@ %@", self.firstname, self.lastname];
    } @end // main.m #import "People1.h” People1 *peop1 = [People1 peopleWithFirstname:@"MingJie" lastname:@"Li"];
    People1 *peop2 = [People1 peopleWithFirstname:@"LongHu" lastname:@"Huang"];
    People1 *peop3 = [People1 peopleWithFirstname:@"LianJie" lastname:@"Li"];
    People1 *peop4 = [People1 peopleWithFirstname:@"Jian" lastname:@"Xiao"]; // 1.利用 block 进行排序,可变数组排序 NSMutableArray *array1 = [NSMutableArray arrayWithObjects:peop1, peop2, peop3, peop4, nil]; [array1 sortUsingComparator:^NSComparisonResult(People1 * _Nonnull obj1, People1 * _Nonnull obj2) { // 先按照姓排序
    NSComparisonResult result = [obj1.lastname compare:obj2.lastname]; if (result == NSOrderedSame) { // 如果有相同的姓,就比较名字
    result = [obj1.firstname compare:obj2.firstname];
    } return result;
    }]; // 2.利用 block 进行排序,不可变数组排序 NSArray *array2 = [NSArray arrayWithObjects:peop1, peop2, peop3, peop4, nil]; NSArray *array3 = [array2 sortedArrayUsingComparator:^NSComparisonResult(People1 * _Nonnull obj1,
    People1 * _Nonnull obj2) { // 先按照姓排序
    NSComparisonResult result = [obj1.lastname compare:obj2.lastname]; if (result == NSOrderedSame) { // 如果有相同的姓,就比较名字
    result = [obj1.firstname compare:obj2.firstname];
    } return result;
    }];
  • 按描述器排序

    	//  Book.h
    
    		#import <Foundation/Foundation.h>
    
    		@interface Book : NSObject
    
    		@property (nonatomic, retain) NSString *name;
    
    			+ (id)bookWithName:(NSString *)name;
    
    		@end
    
    	//  Book.m
    
    		#import "Book.h"
    
    		@implementation Book
    
    		+ (id)bookWithName:(NSString *)name {
    Book *book = [[Book alloc] init];
    book.name = name;
    return book;
    } @end // People2.h #import <Foundation/Foundation.h> @class Book; @interface People2 : NSObject // 名
    @property (nonatomic, retain) NSString *firstname; // 姓
    @property (nonatomic, retain) NSString *lastname; // 书
    @property (nonatomic, retain) Book *book; + (id)peopleWithFirstname:(NSString *)firstname lastname:(NSString *)lastname bookName:(NSString *)bookName; @end // People2.m #import "People2.h"
    #import "Book.h" @implementation People2 + (id)peopleWithFirstname:(NSString *)firstname lastname:(NSString *)lastname bookName:(NSString *)bookName { People2 *peop = [[People2 alloc] init]; peop.lastname = lastname;
    peop.firstname = firstname;
    peop.book = [Book bookWithName:bookName]; return peop;
    } - (NSString *)description{ return [NSString stringWithFormat:@"%@ %@, bookName: %@", self.firstname, self.lastname, self.book.name];
    } @end // main.m #import "People2.h" People2 *peop1 = [People2 peopleWithFirstname:@"MingJie" lastname:@"Li" bookName:@"book1"];
    People2 *peop2 = [People2 peopleWithFirstname:@"LongHu" lastname:@"Huang" bookName:@"book2"];
    People2 *peop3 = [People2 peopleWithFirstname:@"LianJie" lastname:@"Li" bookName:@"book2"];
    People2 *peop4 = [People2 peopleWithFirstname:@"Jian" lastname:@"Xiao" bookName:@"book1"]; // 先按照书名进行排序
    /*
    这里的 key 写的是 @property 的名称
    */
    NSSortDescriptor *bookNameDesc = [NSSortDescriptor sortDescriptorWithKey:@"book.name" ascending:YES]; // 再按照姓进行排序
    NSSortDescriptor *lastnameDesc = [NSSortDescriptor sortDescriptorWithKey:@"lastname" ascending:YES]; // 再按照名进行排序
    NSSortDescriptor *firstnameDesc = [NSSortDescriptor sortDescriptorWithKey:@"firstname" ascending:YES]; // 1.按描述器排序,可变数组排序 NSMutableArray *array1 = [NSMutableArray arrayWithObjects:peop1, peop2, peop3, peop4, nil]; // 按顺序添加排序描述器
    NSMutableArray *descs1 = [NSMutableArray arrayWithObjects:bookNameDesc, lastnameDesc, firstnameDesc, nil]; [array1 sortUsingDescriptors:descs1]; // 2.按描述器排序,不可变数组排序 NSArray *array2 = [NSArray arrayWithObjects:peop1, peop2, peop3, peop4, nil]; // 按顺序添加排序描述器
    NSArray *descs2 = [NSArray arrayWithObjects:bookNameDesc, lastnameDesc, firstnameDesc, nil]; NSArray *array3 = [array2 sortedArrayUsingDescriptors:descs2];

iOS - OC NSArray 数组的更多相关文章

  1. OC NSArray 数组

    # OC NSArray 数组 NSArray常用方法 获取数组中第一位元素 array.firstObject 获取数组中最后一个元素 array.lastObject 获取数组中指定索引下标的元素 ...

  2. OC基础:数组.字典.集 分类: ios学习 OC 2015-06-18 18:58 47人阅读 评论(0) 收藏

    ==============NSArray(不可变数组)=========== NSArray,继承自NSObject  用来管理(储存)一些有序的对象,不可变数组. 创建一个空数组 NSArray ...

  3. Objective-C之NSArray(数组)默认排序与自定义排序

    在讲OC中数组的排序之前我先上一段代码,它是简单数组排序的一种方法(也就是元素是字符串或者数据的数组,因为后面要讲元素为类的数组排序) 代码1: NSArray *sortArr4 = [sortAr ...

  4. iOS - OC 面向对象语法

    1.类 1)根类:因为类 NSObject 是层次结构的最顶层,因此称为根类. 可以将类称为子类(subclass)和父类(superclass),也可以将类称为子类和超类. 2)分类/类别(cate ...

  5. iOS开发-NSArray

    忙了一上午,解决了几个bug,现在终于抽出来一点时间喝点水休息下, 想着系列这么浩大的一个工程,才刚刚开始写,不能断了,就跟写小说一样,既然是系列,那么就需要不停更... 好吧. 简单的说说iOS开发 ...

  6. ios+oc面试题

    ios+oc面试题     浅复制和深复制的区别?//浅拷贝和深拷贝答案:浅层复制(copy):只复制指向对象的指针,而不复制引用对象本身.//通过对象的指针来访问这个对象深层复制(mutableCo ...

  7. 从deque到std::stack,std::queue,再到iOS 中NSArray(CFArray)

    从deque到std::stack,std::queue,再到iOS 中NSArray(CFArray) deque deque双端队列,分段连续空间数据结构,由中控的map(与其说map,不如说是数 ...

  8. IOS判断NSArray是否为空

    场景描述:判断一个集合是否为空,如果不为空执行A,如果为空执行B Java实现方法 public void exec(){ List<String> list = this.getCont ...

  9. swift和OC - 拆分数组 和 拆分字符串

    1. 拆分数组 /// 根据 数组 截取 指定个数返回 多个数组的集合 func splitArray( array: [Date], withSubSize subSize: Int) -> ...

随机推荐

  1. 【JQGRID DOCUMENTATION】.学习笔记.5.Form Editing

    JqGrid支持为view ,add, edit,delete, search创建一个on the fly的form.这使得Modal Boxes和行内编辑能够在程序用结合.毕竟,行内编辑只能用在已经 ...

  2. 【jQuery UI 1.8 The User Interface Library for jQuery】.学习笔记.9.Progressbar控件

    Progressbar控件用来显示任意进程的完成百分比. 默认安装启用 配置选项 控件暴露的事件API progressbar暴露的独一无二的方法 一些现实生活的例子 当前版本中,我们或系统必须明确进 ...

  3. HttpClient I/O exception (java.net.SocketException) caught when processing request: Connect

    转自:http://luan.iteye.com/blog/1820054 I/O exception (java.net.SocketException) caught when processin ...

  4. Java常用jar包用途

    Java常用jar包用途: USAGE INDEX JAR NAME USAGE 1 ASM asm-2.2.3.jar ASM字节码库 2 ASM asm-commons-2.2.3.jar ASM ...

  5. Linux CentOS 6.5 yum安装MongoDB的操作

    安装MongoDB的方法有很多种,可以源代码安装,在CentOS也可以用yum源安装的方法.由于MongoDB更新得比较快,我比较喜欢用yum源安装的方法.64位CentOS下的安装步骤如下: 1.准 ...

  6. FIleReader无法解决编码问题

    可把FileReader 用InputStreamReader(new FileInputStream(String fileptah),"utf-8")替代

  7. 新建一个DataTable(只针对一列)

    /// <summary> /// 新建一个DataTable(只针对一列) /// </summary> /// <param name="dataStr&q ...

  8. jar 文件

    使用类库中的类: 1.当前应用程序所在目录中没有包名的类,直接用. 2.java库. import语句导入. 3.当前目录的子孙目录有报名的类,set classpath,之前有写. 4.扩展ext文 ...

  9. 安装python-devel 在升级到python2.7之后

    分别执行如下命令: # yum update # yum install centos-release-SCL # yum search all python27 在搜索出的列表中发现python27 ...

  10. python递归小疑惑

    代码如下: def crawlAndGet(keyword, n): if n>0: jsondata = os.system('scrapy crawl beijing -a store_di ...