JAVA List<T> 如何初始化

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA List<T> 如何初始化相关的知识,希望对你有一定的参考价值。

//List是虚拟的类,不能直接实例化,但是可以实例化他的子类
import java.util.ArrayList;
import java.util.List;

public class T
public static void main(String[] args)
List<String> list = new ArrayList<String>();

参考技术A import java.util.List;
import java.util.ArrayList;

通常用法:List<类型> list=new ArrayList<类型>();
List是一个接口,不可实例化,
通过实例化其实现类来使用List集合,
他的最常用实现类ArrayList;
使用示例:List<String> list= new ArrayList<String>();

List<T> list=new ArrayList<T>();
其中类型T是对list集合元素类型的约束,
比如说你声明了一个List<String>,
然后往这个集合里面添加一个不是String类型的对象,
会引发异常。
参考技术B List<t> list = new ArrayList<t>();

如何将项目添加到 List<T> 的开头?

【中文标题】如何将项目添加到 List<T> 的开头?【英文标题】:How to add item to the beginning of List<T>? 【发布时间】:2010-09-28 06:38:32 【问题描述】:

我想在绑定到List&lt;T&gt; 的下拉列表中添加“选择一个”选项。

查询List&lt;T&gt; 后,如何将我的初始Item(不是数据源的一部分)添加为List&lt;T&gt; 中的第一个元素?我有:

// populate ti from data               
List<MyTypeItem> ti = MyTypeItem.GetTypeItems();    
//create initial entry    
MyTypeItem initialItem = new MyTypeItem();    
initialItem.TypeItem = "Select One";    
initialItem.TypeItemID = 0;
ti.Add(initialItem)  <!-- want this at the TOP!    
// then     
DropDownList1.DataSource = ti;

【问题讨论】:

【参考方案1】:

使用Insert 方法:

ti.Insert(0, initialItem);

【讨论】:

@BrianF,是的,你是对的。文档:This method is an O(n) operation, where n is Count. @23W 如果您要链接到 MSDN,您可能应该链接到英文页面。 @GaryHenshall 是的,使用Add 方法,它插入到最后。 从 .NET 4.7.1 开始,您可以使用Append()Prepend()。 Check this answer 这是否会替换列表中已有的现有值?【参考方案2】:

更新:一个更好的主意,将“AppendDataBoundItems”属性设置为 true,然后以声明方式声明“Choose item”。数据绑定操作将添加到静态声明的项目中。

<asp:DropDownList ID="ddl" runat="server" AppendDataBoundItems="true">
    <asp:ListItem Value="0" Text="Please choose..."></asp:ListItem>
</asp:DropDownList>

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listcontrol.appenddatabounditems.aspx

-奥辛

【讨论】:

这很酷。 OP 没有指定 ASP.NET,但这是一个很好的技巧。【参考方案3】:

从 .NET 4.7.1 开始,您可以使用无副作用的 Prepend()Append()。输出将是一个 IEnumerable。

// Creating an array of numbers
var ti = new List<int>  1, 2, 3 ;

// Prepend and Append any value of the same type
var results = ti.Prepend(0).Append(4);

// output is 0, 1, 2, 3, 4
Console.WriteLine(string.Join(", ", results ));

【讨论】:

这个解决方案在使用 enumerable 时是最好的 所有列表都实现了 IEnumerable,但是 prepend 和 append 都将返回一个 IEnumerable。这可能是也可能不是您想要的。【参考方案4】:

使用List&lt;T&gt;插入方法:

List.Insert 方法 (Int32, T):Inserts 将一个元素插入到 specified index 的 List 中。

var names = new List<string>  "John", "Anna", "Monica" ;
names.Insert(0, "Micheal"); // Insert to the first element

【讨论】:

【参考方案5】:

使用List&lt;T&gt;.Insert

虽然与您的具体示例无关,但如果性能很重要,还可以考虑使用 LinkedList&lt;T&gt;,因为将项目插入到 List&lt;T&gt; 的开头需要移动所有项目。见When should I use a List vs a LinkedList。

【讨论】:

以上是关于JAVA List<T> 如何初始化的主要内容,如果未能解决你的问题,请参考以下文章

如何在 WebService (java) 上返回 List<T>

java 中 List<T>如何按照T中的一个字段排序?

如何将项目添加到 List<T> 的开头?

java List<T>排序

如何理解 Java 中的 lt;T extends Comparable<

C#中List<T>的作用与用法,求详解 谢谢