集合框架-实现类(ArrayList)

一、基本含义

Collection接口 → List 接口→ Arrays实现类。
名称:数组序列。

项目 ArrayList Vector
原理
功能
线程安全性 多线程环境中,程序员自己管理线程的同步问题 线程安全
长度增长 原长50%,节约内存空间 原长100%
开发优先使用性 优先最新版本ArrayList 次之

二、长度——size()

public class ListTest {
  public List coursesToSelect;
  public ListTest() {
    this.coursesToSelect = new ArrayList();
  }
  public static void main(String[] args){
    System.out.println(coursesToSelect.size());
  }
}

三、获取

3.1 知对象

3.1.1 indexOf(Object o)

第一次出现的索引
有则索引,无则-1

Course cr1 = new Course("1", "语文");
System.out.println(coursesToSelect.indexOf(cr1));

3.1.2 lastIndexOf(Object o)

最后一次出现的索引
有则索引,无则-1

Course cr1 = new Course("1", "语文");
System.out.println(coursesToSelect.lastIndexOf(cr1));

3.2 知索引——get()

get(int index)

3.2.1 for循环

public void testGet() {
  for (int i = 0; i < coursesToSelect.size(); i++) {
    Course cr = (Course) coursesToSelect.get(i);
    System.out.println("课程:" + cr.getId() + ":" + cr.getName());
  }
}

3.2.2 foreach循环

foreach是Iterator的简写。

public void testForeach() {
   /**
    * 为什么使用Object?
    * 原因是当一个元素存入集合中时,其类型被忽略,存储为Object型。
    */
   for (Object obj : coursesToSelect) {
     Course cr = (Course) obj;
     System.out.println("课程:" + cr.getId() + ":" + cr.getName());
   }
}

3.2.3 迭代器——Iterator

特点:不能存储数据,只是用来遍历集合中的元素。即必须依赖于集合而存在。


public void testIterator() {
    // 通过集合的iterator方法,创建迭代器的实例。
    Iterator it = coursesToSelect.iterator();
    // 未知次数时,使用while循环。
    while (it.hasNext()) {
      Course cr = (Course) it.next();
      System.out.println("课程:" + cr.getId() + ":" + cr.getName());
    }
}

3.3 复制——clone()

返回此 ArrayList实例的浅拷贝。


四、增加——add()

4.1 元素为对象时——add()

4.1.1 末尾增加——add(E e)

Course cr1 = new Course("1", "语文");
coursesToSelect.add(cr1);

4.1.2 任意位置增加——add(int index, E element)

Course cr2 = new Course("2", "数学");
coursesToSelect.add(0, cr2);

4.2 元素为对象数组时——addAll()

4.2.1 末尾增加——addAll(Collection c)

Course[] courses = { new Course("3", "英语"), new Course("4", "政治") };     
// 数组。不可以直接添加到集合中,需要先转化为List集合。    
coursesToSelect.addAll(Arrays.asList(courses));

4.2.2 任意位置增加——addAll(int index, Collection c)

Course[] courses2 = { new Course("5", "历史"), new Course("6", "地理") };
coursesToSelect.addAll(2, Arrays.asList(courses2));

五、删除——remove()

5.1 知索引——remove(int index)

coursesToSelect.remove(1);

5.2 知对象

5.2.1 元素为对象时——remove(Object o)

Course cr = (Course)coursesToSelect.get(1);
coursesToSelect.remove(cr);

5.2.2 元素为对象数组时

5.2.2.1 直接删除——removeAll(Collection c)

Course[] courses = { (Course) coursesToSelect.get(0), (Course) coursesToSelect.get(1) };
coursesToSelect.removeAll(Arrays.asList(courses));

5.2.2.2 间接删除——retainAll(Collection c)

Course[] courses = { (Course) coursesToSelect.get(0), (Course) coursesToSelect.get(1) };
coursesToSelect.retainAll(Arrays.asList(courses));

5.3 清空——clear()

coursesToSelect.clear();

六、修改——set(int index, E element)

coursesToSelect.set(1, new Course("7", "物理"));

七、比较

7.1 是否包含——contains(Object o)

Course cr1 = (Course)coursesToSelect.get(1);
Course cr2 = new Course("1", "语文");
System.out.println(coursesToSelect.contains(cr1)); // true
System.out.println(coursesToSelect.contains(cr2)); // false

7.2 是否为空——isEmpty()

System.out.println(coursesToSelect.isEmpty());

八、排序

8.1 比较器

参见《集合框架-工具类(Collections)》

8.1 升序——sort(Comparator c)


(4)toArray()
以正确的顺序(从第一个到最后一个元素)返回一个包含此列表中所有元素的数组。


(5)toArray(T[] a)
以正确的顺序返回一个包含此列表中所有元素的数组(从第一个到最后一个元素); 返回的数组的运行时类型是指定数组的运行时类型。


猜你喜欢

转载自blog.csdn.net/lizengbao/article/details/86688929
今日推荐