List<gt;和List<T>的区别

Python016

List<gt;和List<T>的区别,第1张

数组的容量是固定的,您只能一次获取或设置一个元素的值,而List<T>的容量可根据需要自动扩充、修改、删除或插入数据。 数组可以具有多个维度,而 List<T>始终只具有一个维度。但是,您可以轻松创建数组列表或列表的列表。特定类型(Object 除外)的数组 的性能优于List的性能。 这是因为 List的元素属于 Object 类型;所以在存储或检索值类型时通常发生装箱和取消装箱操作。不过,在不需要重新分配时(即最初的容量十分接近列表的最大容量),List<T>的性能与同类型的数组十分相近。简单说前面是定长,后者是泛型,可变

T代表是C#的类型

也就是说可以是:

List<int>

List<String>

List<int[]>

List<Object>

T可以是任何的.Net Framework中规定的类型(值类型、引用类型)

List<T>称为泛型集合,T的这个类型表示的是集合中元素的类型。

与List<T>对应的非乏型集合是ArrayList

可以通过以下工具类进行实现:

import java.lang.reflect.Method

import java.util.ArrayList

import java.util.Collections

import java.util.Comparator

import java.util.List

/**

* List按照指定字段排序工具类

*

* @param <T>

*/

public class ListSortUtil<T>{

/**

* @param targetList 目标排序List

* @param sortField 排序字段(实体类属性名)

* @param sortMode 排序方式(asc or desc)

*/

@SuppressWarnings({ "unchecked", "rawtypes" })

public void sort(List<T>targetList, final String sortField, final String sortMode) {

Collections.sort(targetList, new Comparator() {

public int compare(Object obj1, Object obj2) {

int retVal = 0

try {

//首字母转大写

String newStr=sortField.substring(0, 1).toUpperCase()+sortField.replaceFirst("\\w","")

String methodStr="get"+newStr

Method method1 = ((T)obj1).getClass().getMethod(methodStr, null)

Method method2 = ((T)obj2).getClass().getMethod(methodStr, null)

if (sortMode != null &&"desc".equals(sortMode)) {

retVal = method2.invoke(((T) obj2), null).toString().compareTo(method1.invoke(((T) obj1), null).toString())// 倒序

} else {

retVal = method1.invoke(((T) obj1), null).toString().compareTo(method2.invoke(((T) obj2), null).toString())// 正序

}

} catch (Exception e) {

throw new RuntimeException()

}

return retVal

}

})

}

}

Collections.sort(list.)//升序