`
slikyn
  • 浏览: 27014 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
文章分类
社区版块
存档分类

关于Collection.toArray(new T[0])自己的一点猜想

阅读更多
1.5的手册中是这么解释这个方法的:
如果参数的长度大于集合中元素的数量,那只把集合的元素放到数组里,如果相等,就全放进去,如果数组长度小,就生成一个新的对应数组


是不是说如果加入的参数大于或等于集合元素的数量,就先把集合的元素放入new T[]这个数组里,再由这个T赋值给自己定义的T类型的数组
如果加入的参数小于集合元素的数量,则声明一个新的数组(我们并不知道这个数组的名字),再由这个我们不知道名字的数组赋值给自己定义的T类型的数组


希望高人能够帮我解惑
分享到:
评论
5 楼 lubao83512 2007-08-27  
查询java API吧
4 楼 slikyn 2007-06-21  
恩。自己要注意看看源代码了~
3 楼 weiqingfei 2007-06-21  
你有时间问,为什么不自己看一下源代码,或者测一下呢?

源码
    public <T> T[] toArray(T[] a) {
        if (a.length < size)
            a = (T[])java.lang.reflect.Array.
		newInstance(a.getClass().getComponentType(), size);
	System.arraycopy(elementData, 0, a, 0, size);
        if (a.length > size)
            a[size] = null;
        return a;
    }


测试

import java.util.ArrayList;

/**
 * @author Administrator
 *
 */
public class ToArrayTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		ArrayList al = new ArrayList();
		for (int i = 0; i < 10; i++) {
			al.add(String.valueOf(i));
		}
		String[] s1 = (String[]) al.toArray(new String[15]);
		for (int i = 0; i < s1.length; i++) {
			System.out.println(i+","+s1[i]);
		}
		String[] s2 = (String[]) al.toArray(new String[5]);
		for (int i = 0; i < s2.length; i++) {
			System.out.println(i+","+s2[i]);
		}
	}

}
2 楼 slikyn 2007-06-21  
自己顶一下
1 楼 slikyn 2007-06-21  
自己顶一下

相关推荐

    list.toArray方法

    关于描述中提到的“博文链接”,虽然没有实际的文本内容,但通常博主会在博客中详细介绍`toArray()`方法的具体实现、效率分析、可能遇到的问题以及最佳实践。这可能包括源码解析,解释如何在Java集合框架的源码中...

    关于List.ToArray()方法的效率测试

    T[] array = new T[this._size]; Array.Copy(this._items, 0, array, 0, this._size); return array; } ``` 这里,`_items` 是`List&lt;T&gt;`私有成员,存储了列表中的元素。`Array.Copy()` 方法将`_items`中的元素...

    Java ArrayList.toArray(T[]) 方法的参数类型是 T 而不是 E的原因分析

    例如,如果你有一个 `ArrayList&lt;Number&gt;`,你可以调用 `toArray(new Double[0])`,将列表中的所有元素存储到一个 `Double[]` 中。如果使用 `E`,则无法完成这样的转换,因为 `ArrayList&lt;Number&gt;` 的 `E` 实际上是 `...

    anmo_mybatis_generator.zip

    String[] tableNames = new String[]{}; String tables = request.getParameter("tables"); tableNames = JSON.parseArray(tables).toArray(tableNames); byte[] data = sysGeneratorService.generatorCode...

    C# 中使用matlab参数传递

    MWNumericArray temp = (MWNumericArray)ResOut[0]; Array netInterfaceMatrix = temp.ToArray(MWArrayComponent.Real); double[,] location = (double[,])netInterfaceMatrix; ``` 4. **结果转换** - 在 C# ...

    金陵科技学院软件工程学院大二上Java高级1200Collection.docx

    在Java编程语言中,`Collection`是`java.util`包下的一个接口,它是所有集合类的顶级接口。本文档主要讲解了如何使用`Collection`接口及其相关方法,以及如何使用`Iterator`遍历集合和进行操作。以下是文档中涉及的...

    mongoq:像这样使用 mongoDB

    蒙哥Q 像这样使用 mongoDB: mongoq("testdb").collection("users").find().toArray().done( function(docs){} ).fail( function(err){} ) ; 基于特征标准【连接字符串格式】【连接字符串】 完整的方法支持可链接的...

    Java集合框架Collection接口.pdf

    Collection&lt;String&gt; collection = new ArrayList(); // 创建一个字符串类型的集合 collection.add("apple"); // 添加元素 collection.add("banana"); collection.add("cherry"); Iterator&lt;String&gt; iterator = ...

    Array和Collection相互转换以及copy深度的小测

    String[] array = new String[collection.size()]; array = collection.toArray(array); ``` 这里需要注意,如果数组大小不足,`toArray()`会创建一个新的数组。 **复制深度** 在进行转换时,我们还需要考虑...

    sharp zipsharp zip

    GZipInputStream gzi = new GZipInputStream(response.ResponseStream); MemoryStream ms = new MemoryStream(); int count=0; byte[] uncompress =new byte[1024]; while ((count = gzi.Read(uncompress, 0, ...

    Linq OrderBy

    标题 "Linq OrderBy" 和描述 "Dynamic Linq SortBy" 涉及到的是 .NET Framework 中 LINQ(Language Integrated Query,语言集成查询)的一部分,特别是如何动态地对数据进行排序。在 .NET 中,LINQ 提供了一种强大且...

    Jayrock(json字符串解析)

    public static string JsonSerializer&lt;T&gt;(T t) { DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T)); MemoryStream ms = new MemoryStream(); ser.WriteObject(ms, t); string json...

    加密解密类DESEncrypt.cs

    public static string Encrypt(string Text,string sKey) { ... foreach( byte b in ms.ToArray()) { ret.AppendFormat("{0:X2}",b); } return ret.ToString(); }

    json-to-array:将对象转换为数组

    json到数组 将对象转换为数组例子var toArray = require ( 'json-to-array' ) ;console . log ( toArray ( { name : 'luckydrq' , age : 30 } ) ) ;...var es6Map = new Map ( toArray ( obj ) ) ;存在麻省理工学院

    往Combox中添加项的两种方法

    comboBox1.Items.AddRange(itemList.ToArray()); ``` 此方法将整个数组作为参数传递给`AddRange()`,一次性完成添加,减少了多次调用方法带来的开销。 三、效率比较 从描述中我们知道,`foreach`循环添加项的方法...

    List转换成String数组

    - `list.toArray(new String[list.size()])`将`List&lt;String&gt;`中的所有元素复制到新创建的字符串数组中。 **方法二:简化版toArray()方法** ```java List&lt;String&gt; list = new ArrayList(); list.add("a1"); list....

    nodejs操作mongodb实现增删改查

    collection.find().toArray((err, docs) =&gt; { if (err) throw err; console.log('Documents:', docs); }); // 查询特定条件的文档 collection.find({ name: 'John' }).toArray((err, docs) =&gt; { if (err) throw ...

    WPF 内置控件默认样式查看程序

    查看WPF Control的默认样式,有时候需要修改,可以参考默认样式,然后再作出相应的修改。 主要是代码是: var style = Application.... string s = Encoding.UTF8.GetString(aMemoryStream.ToArray()); return s; }

    ThoughtWorks.QRCode二维码生成库已修改 支持中文

    今天刚刚编译的二维码类库,绝对支持中文! 使用方法(先引用dll) 示例: QRCodeEncoder qrCodeEncoder = new QRCodeEncoder(); qrCodeEncoder.QRCodeEncodeMode = ...Response.BinaryWrite(MStream.ToArray());

Global site tag (gtag.js) - Google Analytics