Collection、List、ArrayList、LinkedList的简单学习

1.Collection下的方法

增:
    boolean add(E e);添加一个数据到集合中
    boolean addAll(Collection<? extends E> c);将一个集合数据添加到另一个集合中
删:
    boolean remove(Object obj);删除指定的元素
    boolean removeAll(Collection<? extends E > c);删除的是交集的元素
    void clear();清空
查:
    boolean isEmpty();判断集合是否为空
    int size();查看集合中元素的个数
    Object[] toArray();将集合转为Object类型的数组
    boolean contains(Object obj);集合中是否包含这个元素,如果包含返回true
    boolean containsAll(Collection<? extends E> c);一个集合是否是另一个集合的子集

2.遍历集合中的数据

2.1for循环遍历

package com.qfedu.b_Collection;
​
import java.util.ArrayList;
import java.util.Collection;
​
public class Demo02 {
    public static void main(String[] args) {
        Collection<String> list = new ArrayList<>();
        list.add("ad");
        list.add("jka");
        list.add("mu");
        list.add("ju");
        Object[] object = list.toArray();
        for (int i = 0; i < list.size(); i++) {
            System.out.println(object[i]);
        }
    }
​
}
 

2.2增强for循环(重点)

语法格式:

for(集合中元素的数据类型 临时变量 : 集合或者数组){
    sout(临时变量);
}
package com.qfedu.b_Collection;
​
import java.util.ArrayList;
import java.util.Collection;
​
public class Demo02 {
    public static void main(String[] args) {
        Collection<String> list = new ArrayList<>();
        list.add("ad");
        list.add("jka");
        list.add("mu");
        list.add("ju");
        for (String s : list) {
            System.out.println(s);
        }
//        Object[] object = list.toArray();
//        for (int i = 0; i < list.size(); i++) {
//            System.out.println(object[i]);
//        }
    }
​
}

2.3迭代器

Iterator<String> iterator = list.iterator();

package com.qfedu.b_Collection;
​
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
​
public class Demo02 {
    public static void main(String[] args) {
        Collection<String> list = new ArrayList<>();
        list.add("ad");
        list.add("jka");
        list.add("mu");
        list.add("ju");
        Iterator<String> iterator = list.iterator();
        while (iterator.hasNext()){
            System.out.println(iterator.next());
        }
//        for (String s : list) {
//            System.out.println(s);
//        }
//        Object[] object = list.toArray();
//        for (int i = 0; i < list.size(); i++) {
//            System.out.println(object[i]);
//        }
    }
​
}
​

3.在集合中存的是自定义的对象

package com.qfedu.b_Collection;
​
import java.util.ArrayList;
import java.util.Collection;
​
class Person {
    private String name;
    private int age;
​
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
​
    public String getName() {
        return name;
    }
​
    public void setName(String name) {
        this.name = name;
    }
​
    public int getAge() {
        return age;
    }
​
    public void setAge(int age) {
        this.age = age;
    }
​
    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
public class Demo03 {
    public static void main(String[] args) {
        Person person1 = new Person("张三", 23);
        Person person2 = new Person("李四", 23);
        Person person3 = new Person("王五", 23);
        Person person4 = new Person("周六", 23);
        Collection<Person> list = new ArrayList<>();
        list.add(person1);
        list.add(person2);
        list.add(person3);
        list.add(person4);
        System.out.println(list);
​
    }
}
​

4.List接口

List下的方法

增:
    void add(int index, E e);在指定的位置插入一个元素
    void add(int indext, Collection<? extends E> c);将一个集合插入到另一个集合的指定位置
删:
    E remove(int index);通过索引来删除指定的元素,返回的是被删除的元素
    E set(int index, E e);通过指定的索引修改数据元素,返回值是被修改的原数据
    E get(int index);通过索引去获取指定元素
    int indexOf(Obiect obj);通过元素获取指定的下标
    int lastIndex(Object obj);通过元素获取元素最后一次出现的索引下标
    List<E> subList(int fromIndex, int toIndex);截取一部分返回一个集合;

5.遍历List集合中的数据

5.1for循环

for(int i = 0; i < list.size(); i++){
    sout(list,get(i));
}

5.2增强for循环

for(数据类型 s:list){
    sout(s);
}

5.3迭代器

顺序遍历:

package com.qfedu.b_Collection;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class Demo02 {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("ad");
        list.add("jka");
        list.add("mu");
        list.add("ju");
        Iterator<String> iterator = list.iterator();
        while (iterator.hasNext()){
            //顺序遍历
            System.out.println(iterator.next());
        }

    }

}

倒序遍历:

package com.qfedu.b_Collection;

import java.util.ArrayList;
import java.util.ListIterator;
import java.util.List;

public class Demo02 {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("ad");
        list.add("jka");
        list.add("mu");
        list.add("ju");
        ListIterator<String> iterator = list.listIterator(4);
        while (iterator.hasPrevious()){
            //倒序遍历
            System.out.println(iterator.previous());
        }
    }
}

6.集合中存对象

package com.qfedu.b_Collection;

import java.util.ArrayList;
import java.util.List;

class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
public class Demo03 {
    public static void main(String[] args) {
        Person person1 = new Person("张三", 23);
        Person person2 = new Person("李四", 23);
        Person person3 = new Person("王五", 23);
        Person person4 = new Person("周六", 23);
        List<Person> list = new ArrayList<>();
        list.add(person1);
        list.add(person2);
        list.add(person3);
        list.add(person4);
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }

    }
}

7.ArrayList

ArrayList底层是数组,可以扩容的,默认的容量是10,

超过容量以后会自动扩容,扩容1.5倍;

特征:查询快,增删慢

因为底层是数组,通过索引下标直接查询,时间复杂度o(1),因为增删涉及到扩容的问题,而每次扩容都会消耗时间和内存

8.LinkedList

底层是一个双向链表

特征:查询慢,增删块

9.ArrayList和LinkedList和Vector的区别

ArrayList和Vector的底层都是数组,而Vector主要涉及到线程安全的问题,效率低,所以开发中不用Vector;而LinkedList的底层是双向链表,它的特征是查询慢,增删快,因为它的数据都有前置结点和后继结点,增删的时候只需要找到对应的前置结点Note prev和后继结点Note next就可以直接增删,时间复杂度为o(1);查询的时候采用的是二分法查找,时间复杂度为log以二为底n的对数;而ArrayList的特征是查询快,增删慢,因为底层是数组,通过索引下标直接查询,时间复杂度o(1),因为增删涉及到扩容的问题,而每次扩容都会消耗时间和内存,时间复杂度o(n);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值