List集合
List集合是一个元素有序,可重复的集合,集合中每个元素都有其对应的顺序索引 List集合允许重复使用元素,可以通过索引来访问指定位置的集合元素 List集合默认按照元素的添加顺序设置元素的索引,索引从0开始 以下是List接口的一些特殊方法体现
import java.util.ArrayList;
import java.util.List;
public class ListTest {
public static void main (String[] args) {
List l = new ArrayList();
l.add("yjh728" );
l.add("YJH" );
l.add("728" );
l.add("728" );
System.out.println(l);
l.remove("728" );
System.out.println(l);
for (Object obj : l) {
System.out.println((String) obj);
}
System.out.println(l);
l.add(1 , "728" );
System.out.println(l);
System.out.println(l.get(2 ));
System.out.println(l.indexOf("728" ));
System.out.println(l.lastIndexOf("728" ));
l.set(1 , "0728" );
System.out.println(l);
l.remove("0728" );
System.out.println(l);
System.out.println(l.subList(0 , 2 ));
}
}
Java8为List结合增加了sort()和replaceAll()两个常用的默认方法
import java.util.ArrayList;
import java.util.List;
public class ListTest {
public static void main (String[] args) {
List l = new ArrayList();
l.add("yjh728" );
l.add("YJH" );
l.add("728" );
l.sort((o1, o2) -> ((String) o1).length() - ((String) o2).length());
System.out.println(l);
l.replaceAll(ele -> ((String) ele).length());
System.out.println(l);
}
}
List相对于Set额外提供了一个listIterator()方法,该方法返回一个ListIterator对象,该类在Iterator类的基础上增加了向前迭代的功能
import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;
public class ListIteratorTest {
public static void main (String[] args) {
List l = new ArrayList();
l.add("yjh" );
l.add("728" );
l.add("YJH728" );
ListIterator lt = l.listIterator();
while (lt.hasNext()) {
System.out.println((String) (lt.next()));
lt.add("========================" );
}
System.out.println("下面开始反迭代" );
while (lt.hasPrevious()) {
System.out.println((String) (lt.previous()));
}
System.out.println(l);
}
}
ArrayList实现类
ArrayList是线程不安全的 ArrayList集合是List接口的典型实现,它是基于数组实现的List类 ArrayList类封装了一个动态的、允许在分配的Object[]数组。 它的实例(对象)可以通过initialCapacity参数来设置该数组的长度 创建对象时若不指定initialCapacity参数,系统自动为数组设置长度为10 当元素超过数组长度时,initialCapacity会自动增加,但是当添加大量数据时会增加initialCapacity自动增加的次数,导致性能下降 因此,当大量改变元素的个数时,可以通过ensureCapacity()方法和trimToSize()方法来重新分配Object[]数组 void ensureCapacity(int minCapacity):将赎罪长度增加大于或等于minCapacity值 void trimToSize()调整数组长度为当前元素的个数,可以减少集合对象占用的储存空间
Vector实现类
Vector是线程安全的,因此性能比ArrayList性能差 Vector实现类与ArrayList实现类在用法上几乎完全相同,在这里不多做叙述 Vector在JDK1.0就出现了,有很多的缺点,一般不建议使用Vector实现类、 Vector还提供了一个Stack子类,可以实现栈的功能,因出现较早,所以性能较差,仍不建议使用,若想实现栈的功能,可以选择使用ArrayDeque类
数组长度固定的List
import java.util.Arrays;
import java.util.List;
public class FixedSizeList {
public static void main (String[] args) {
List fixedSize = Arrays.asList("yjh" , "728" , "yjh728" );
System.out.println(fixedSize);
}
}