因此,与使用0作为占位符的int数组不同,有没有用于未使用数组索引的占位符?我无法弄清楚我的生活如何使用一个找到我的数组的逻辑大小。谢谢!在Java中查找对象数组的逻辑大小
回答
在一个类型的对象阵列(String[]
,Thread[]
,Object[]
等)中的条目的默认值是null
。这就是int[]
阵列中的0
示例的值。
例如为:
Object[] objectArray = new Object[10];
System.out.println(objectArray[0] == null); // "true"
有0
之间int[]
和null
在Object[]
当然有差别,:0
是一个有效的int
你可以使用所有可以使用int
S为的事情。当然,null
是一个不涉及任何对象的对象引用,所以实际上,您可以使用该对象引用完成的唯一一件事就是看它是否为null
。 :-)
arrayref.length
是数组的大小。如果取消未分配/未分配,它将根据阵列类型具有null
或ZERO
。
int [] a = new int [10];
a[0] = 1;
a[1] = 2;
int logicalLength = 0;
for(int i=0; i<a.length; i++){
if(a[i] != 0){ // Here a[i] != 0 changes depending on the type of the array
logicalLength++;
}
}
System.out.println(logicalLength);
System.out.println(a.length);
在一个数组中,他没有赋值,然后默认值被存储。 int的默认值为0,double为0.0,String为空。
确定数组的“逻辑”大小可能会很棘手,主要是因为在所有情况下数组都必须存在有效值。没有“占位符”值意味着“这里没有价值”。基本整数类型(byte
,char
,short
,int
和long
)的
数组初始化为这些类型,默认值0,你注意。
浮点类型的数组(float
和double
)被初始化为这些类型的默认值0.0。
boolean
的数组初始化为false
。
并且任何Object
类型的数组被初始化为null
。
在所有这些情况下,适当类型的变量可以采用默认值。那么如何判断这些值是否恰好等于默认值或实际上并未由应用程序提供的默认值呢?您必须定义“占位符”对您的应用程序意味着什么,并确保相应地初始化阵列。
如果您的阵列用于存储数字,您可能会做的一件事是让它们成为相应的Object
类型,即使用Integer[]
而不是int[]
。这将导致数组初始化为null
而不是0.出现在这样一个数组中的任何0都是合法的0,而不是初始化的人工产物。
如果null
是合法值,则可以考虑使用Optional<Foo>[] value =
而不是Foo[] value =
。然后任何数组元素null
肯定没有被设置。如果您的value[n] != null
,您可以检查value[n].isPresent()
以确定是否存在真实的Foo
。
这里有很多的可能性,但底线是你必须建立自己的机制。 Java中并没有像“占位符值”那样的内容。
- 1. 在JavaScript的数组对象逻辑
- 2. 如果语句逻辑 - 对象数组
- 3. 在屏幕上查找光标下的对象的逻辑
- 4. 在java中查找最大数组
- 5. 查找java数组中的最小/最大数
- 6. 对象创造逻辑的Java
- 7. Java:查找数组中的最大值
- 8. 查找json数组中的对象数
- 9. 查找数组最小“对”
- 10. JS:查找对象数组中的最大数字
- 11. Java在逻辑上连接数组
- 12. Java中的数组大小
- 13. 查找单元格数组中的元素(逻辑0或1)
- 14. Java对象的大小
- 15. Ruby数组对象查找
- 16. 查找数组对象
- 17. 查找数组中的对象
- 18. 查找类对象数组中的值
- 19. 查找double *数组的大小C++
- 20. 如何查找数组的大小
- 21. Java:如何获得整数(对象)数组的大小?
- 22. 在VBA中查找字典对象的大小
- 23. 在MATLAB中使用逻辑或查找?
- 24. 如何查找对象数组中的第二大元素
- 25. 找出java中版本的最大值的逻辑
- 26. 如何在数组中的对象中查找参数的最大值?
- 27. 推荐的JavaScript对象数组大小
- 28. Java:构建模式与逻辑分组对象
- 29. 在Java中没有大小的数组
- 30. 按对象数组嵌套数组中的值查找 - 大数据集
你好,你可能会在这个[post]找到答案(http://stackoverflow.com/questions/9297899/where-is-arrays-length-property-defined) – Romain
依赖数组条目的值,如null或0作为“未使用”的指示是人们应该考虑两次的东西。使用一个可以增长的集合(例如ArrayList)来存储相关条目。如果索引值是相关的(并且您需要“空白”),请考虑使用地图。 – laune