摘要:
在java中集合主要分为两类,collection和map两个大的接口,collection又分为list和set接口,这里记录list接口中常用的方法。
list的特点:
list存储的数据是有序的,可重复的。
list的主要实现类:
ArrayList(可以看作是一个动态的数组,底层会自动扩容,线程不安全,查询效率高,插入效率低)
LinkedList(底层是双向链表,查询效率低,插入效率高)
vector(线程安全,基本不使用)
list中常用的方法(按功能分,可以从增、删、改、查,插,长度,遍历几个方面描述)
增:
void add(Object obj) // 在末尾增加一个obj元素
boolean addAll(int index, Collection ele) // 在指定的位置处添加所有的集合元素到集合中删:
remove(int index) 或者 remove(Object obj),分别表示移除指定索引的元素和移除指定值的元素,前者是List接口独有的,后者是Collection共有的。改:
Object set(int index,Object ele) // 设置指定index位置的元素为ele查:
Object get(int index) // 获取指定index位置的元素插:
void add(int index, Object ele) // 在指定位置上增加ele元素长度
int size()第一次出现元素的索引和最后一次出现的索引
indexOf(Object obj) 和lastIndexOf(Object obj)-
遍历:有三种
- 迭代器Iterator
- 增强for
- 普通for或者while
demo示例
public class ArrayList{
@Test
public void test1(){
ArrayList list = new ArrayList();
/*在末尾添加*/
list.add(123); // 添加元素
list.add("abc");
list.add(123) ;// 体现了list的可重复性
list.add(new Date();
/*在指定位置插入*/
list.add(1, "BB"); // 在第二个位置上添加BB元素
/*将一个集合的所有元素添加到一个集合中*/
List list2 = Arrays.asList(1,2,3); // 通过数组工具类创建一个新的List
list.addAll(list2); // 此时的集合中会多出三个元素1,2,3
/*将一个集合作为一个整体添加到一个集合中*/
List list3 = Arrays.asList("a","b","c");
list.add(list3) // 将集合list3作为一个整体添加到list集合中
/*返回123首次出现的索引*/
int index = list.indexOf(123);
/*返回123最后一次出现的位置*/
index lastIndex = list.lastIndexOf(123);
/*从集合中删除元素*/
Object o = list.remove(0) // 删除第一个位置的元素, 这里删除是指按照索引删除,其实add元素的时候比如123,其实添加的是包装类的对象,会自动装箱,因此要移除指定值的元素,我们需要手动装箱,如list.remove(new Integer(123));就会移除指定值的123
/**改*/
list.set(1, "cc"); // 将位置为2的元素修改为CC
/*使用Iterator遍历*/
Iterator iterator = list.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next());
}
/*使用增强for*/
for(Object ob: List){
System.out.println(ob);
}
/*普通for*/
for(int i = 0; i < list.size(); i++){
System.out.println(list.get(i));
}
}
}