object c 数组初始化

本文介绍如何使用Objective-C语言中的NSArray类来初始化数组,并演示了如何使用initWithObjects:和arrayWithObjects:方法创建数组,以及如何遍历数组。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

-(void)initArray

{

    NSString *strMsg =@"hello world!!!";

   NSNumber *class1 = [NSNumbernumberWithInteger:-345];

   NSNumber *class2 = [NSNumbernumberWithFloat:234.5];

    

   NSArray *myArray =[[NSArrayalloc]initWithObjects:

                       strMsg,

                       class1,

                       class2,

                      nil];

   NSLog(@"myArray=%@",myArray);

}


你可以看到,我们用initWithObjects:来初始化array。当你用这个初始化函数时,把你要存储的对象一个一个传递进去。最后用一个nil符号结束这个列表以通知运行时列表什么时候结束。如果你不这么做,LLVM编译器会抛出一个如下的异常:
warning: Semantic Issue: Missing sentinel in method dispatch 

我们也可以用NSArray类的 arrayWithObjects:方法来创建一个可自动释放的数组。像这样: 


NSArray *array = [NSArrayarrayWithObjects:stringObject,
signedNumber,
unsignedNumber, nil]; 


NSUInteger counter = 0;for (counter = 0;

counter< [array count];
counter++){
id object = [array objectAtIndex:counter];NSLog(@"Object = %@", object);
}



NSString *stringObject = @"My String";
NSNumber *signedNumber = [NSNumbernumberWithInteger:-123];

NSNumber *unsignedNumber = [NSNumber numberWithUnsignedInteger:123];

NSArray *anotherArray = [[NSArrayalloc] initWithObjects:
@"String 1",
@"String 2",
@"String 3", nil];
NSMutableArray *array = [[NSMutableArrayalloc] initWithObjects:stringObject,
signedNumber, nil];
[array addObject:unsignedNumber];

[array removeObject:signedNumber];

[array addObjectsFromArray:anotherArray];

for (id object in array){
NSLog(@"Object = %@", object);
}



### Map 数组初始化的方法 在 Java 中,`Map` 是一种键值对的数据结构。如果需要创建一个 `Map` 数组并对其进行初始化,可以通过多种方式进行优化以减少重复代码。以下是几种常见的实现方式: #### 使用循环批量初始化 当需要多个相同的 `Map` 结构时,可以利用循环来简化初始化过程。 ```java import java.util.*; public class Main { public static void main(String[] args) { int size = 5; List<Map<String, String>> mapList = new ArrayList<>(); for (int i = 0; i < size; i++) { Map<String, String> map = new HashMap<>(); map.put("key1", "value" + i); map.put("key2", "data" + i); mapList.add(map); } System.out.println(mapList); // 输出结果 } } ``` 这种方法通过循环减少了大量重复的手动赋值操作[^1]。 --- #### 利用流式 API 进行初始化 Java 8 提供了更简洁的方式——Stream 流式处理,能够进一步提升代码可读性和效率。 ```java import java.util.*; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { List<Map<String, Object>> mapList = Arrays.asList( createMap(1), createMap(2), createMap(3) ); System.out.println(mapList); // 或者使用 Stream 动态生成 List<Map<String, Object>> dynamicMapList = IntStream.rangeClosed(1, 5) .mapToObj(i -> createMap(i)) .collect(Collectors.toList()); System.out.println(dynamicMapList); } private static Map<String, Object> createMap(int index) { Map<String, Object> map = new HashMap<>(); map.put("id", index); map.put("name", "Item-" + index); return map; } } ``` 此方法不仅提高了代码的灵活性,还便于扩展和维护[^2]。 --- #### 静态初始化块 对于固定的初始数据集,可以直接采用静态初始化块完成一次性加载。 ```java import java.util.*; public class Main { public static final List<Map<String, String>> MAP_LIST; static { MAP_LIST = new ArrayList<>(); Map<String, String> map1 = new HashMap<>(); map1.put("keyA", "valA"); map1.put("keyB", "valB"); Map<String, String> map2 = new HashMap<>(); map2.put("keyC", "valC"); map2.put("keyD", "valD"); MAP_LIST.addAll(Arrays.asList(map1, map2)); } public static void main(String[] args) { System.out.println(MAP_LIST); } } ``` 这种方式适合于那些不会频繁修改的固定配置项[^3]。 --- #### JavaScript 示例中的过滤逻辑应用 虽然问题是关于 Java 的 `Map` 初始化,但如果涉及跨平台开发(如前端与后端交互),可以从 JavaScript 的数组过滤逻辑中获得灵感。例如,在 Vue.js 或 React 应用程序中筛选子级城市列表时,可以参考如下代码片段: ```javascript let filteredCities = this.data.cityArray.filter(item => item.pid === this.data.province[this.index].id)[^4]; console.log(filteredCities); ``` 尽管这是针对动态数据的操作,但它展示了如何高效管理复杂嵌套关系下的对象集合。 --- ### 总结 以上介绍了四种不同场景下适用于 `Map` 数组初始化的技术方案:基于循环、流式 API、静态初始化以及借鉴自脚本语言的功能特性。每种方法都有其适用范围,开发者可以根据实际需求灵活选用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值