1.1 Java集合框架

1、集合

集合 : 对象的容器,定义了多个对象进行操作的常用方法。可实现数组功能。

和数组的区别 ;

  1. 数组长度固定,集合长度不固定。

  2. 数组可以存储基本类型和引用类型,集合只能存储引用类型。(装箱操作)

2、Collection体系集合

(1、1.1 )

 

特点 : 代表一组任意类型的对象,无序,无下标,不能重复。

方法 : boolean add(Object obj) // 添加一个对象

boolean add All(Collection c) // 将一个集合的所有对象添加到此集合中。

void clear() // 清空此集合中所有的对象。

boolean contains(Object o) // 检查此集合中是否包含o对象

boolean equals(Object o) // 比较此集合是否与指定对象相等

boolean isEmpty() // 判断刺激和是否为空

boolean remove(Object o) // 在此集合中移除o对象

int size() // 返回此集合中的个数

Object [] toArray() // 将此集合转换为数组

package Collection;
​
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
​
/**
 Collection接口的使用
 1.添加与删除元素
 2.遍历元素
 3.判断元素是否存在
 */
​
public class Test01 {
    public static void main(String[] args) {
         //创建集合
         Collection collection = new ArrayList();
​
         //添加元素
         collection.add("苹果");
         collection.add("西瓜");
         collection.add("草莓");
        System.out.println("元素个数" + collection.size());
        System.out.println(collection);
​
        //删除元素
        collection.remove("苹果");
        System.out.println(collection);
​
        //遍历元素
        //1.增强for循环
        for (Object object:collection) {
            System.out.println(object);
        }
​
        //2.使用迭代器,迭代器专门用来遍历集合的一种方式
        Iterator it = collection.iterator();
​
        while (it.hasNext()){
            String s = (String) it.next();
            System.out.println(s);
        }
​
        //判断
        System.out.println(collection.contains("西瓜"));
        System.out.println(collection.isEmpty());//判断是否为空
​
    }
}
​

package Collection;
​
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
​
/**
 * Collection 保存学生信息
 *
 */
public class Test02 {
    public static void main(String[] args) {
​
        Collection collection = new ArrayList();
        Student s1 = new Student("张三",10);
        Student s2 = new Student("李四",15);
        Student s3 = new Student("王五",15);
​
        //1.添加数据
        collection.add(s1);
        collection.add(s2);
        collection.add(s3);
​
        System.out.println(collection.size());
        System.out.println(collection);
​
        //2.删除
        collection.remove(s1);
        System.out.println(collection.size());
​
        //3.遍历
        //1.增强for循环
        for (Object object :collection) {
            Student s = (Student) object;
            System.out.println(s);
        }
​
        //2.迭代器
        Iterator it = collection.iterator();
        while (it.hasNext()){
            Student s = (Student)it.next();
            System.out.println(s);
        }
​
        //4.判断
        System.out.println(collection.contains(s1));
        
    }
}
​

Student 类

package Collection;
​
//学生类
public class Student {
    private String name;
    private int age;
​
    public Student(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 "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
​

3、List集合

特点 :有序,有下标、元素可重复。

方法 : void add(int index,Object o) // 在index位置插入o

boolean addAll(int index,Collection c) // 将一个集合中的元素添加到此集合中Index位置中。

Object get(int index) // 返回集合中指定位置的元素

List subList(int fromIndex,int toIndex) // 返回fromIndex和toIndex之间的集合元素。

package Collection;
​
import java.util.*;
​
public class Test03 {
    public static void main(String[] args) {
        
        //先创建集合对象
        List list = new ArrayList<>();
        
        //添加元素
        list.add("苹果");
        list.add("小米");
        list.add("华为");
        list.add(1, "一加");
        System.out.println(list.toString());
​
        //删除元素
        list.remove("苹果");
        System.out.println(list.toString());
​
        //遍历循环
        //1.for循环
        for (int i = 0; i < list.size(); i++) {
​
            System.out.println(list.get(i));
​
        }
​
        //2.增强for循环
        for (Object object : list) {
            System.out.println(object);
        }
​
        //3.迭代器
        Iterator it = list.iterator();
        while (it.hasNext()) {
            System.out.println(it.next());
        }
​
        //4.使用列表迭代器,和Iterator的区别,ListIterator可以向前或向后遍历、添加、删除、修改元素
        ListIterator lit = list.listIterator();
        while (lit.hasNext()){
            System.out.println(lit.next()+" : "+lit.nextIndex());
        }
​
​
        //从后往前
        while (lit.hasPrevious()){
            System.out.println(lit.previousIndex()+" : "+lit.previous());
​
        }
​
        //判断
        System.out.println (list.contains("苹果"));
        
        //获取位置
        System.out.println (list.indexOf("华为"));
    }
}
​

package Collection;
​
import java.util.*;
import java.util.List;
​
​
public class Test04 {
    public static void main(String[] args) {
        //创建一个集合
        List list = new ArrayList();
        //添加数字数据(自动装箱)
        list.add(20);
        list.add(30);
        list.add(40);
        list.add(50);
        list.add(60);
        System.out.println(list.size());
        System.out.println(list.toString());
​
        //删除操作
        list.remove(0); //删除的是根据下标来删除的
        System.out.println(list.size());
​
        //sunList : 返回子集合
        List subList = list.subList(1, 3);//包含一,不包含三
        System.out.println(subList);  
    }
}
​

1.List实现类总结

ArrayList 特点 :

  1. 数组结构实现、查询快、增删慢。

  2. 运行效率快,线程不安全。

源码分析 :

  1. DEFAULT_CAPACITY = 10; // 默认容量,这是向集合中添加元素的默认容量,

    如果没添加元素,默认容量为0,如果超过默认容量,每次扩容1.5倍。

  2. elementData // 存放数组元素

  3. size // 实际元素个数

  4. add() // 添加元素

Vector 特点 :

  1. 数组结构实现、查询快、增上慢。

  2. 运行效率低、线程安全。

LinkList 特点 :

  1. 链表结构实现、增删快、查询慢

  2. 双向链表

4、ArrayList

package Collection;
​
import java.util.ArrayList;
import java.util.Iterator;
import java.util.ListIterator;
​
//ArrayList演示
public class Test05 {
    public static void main(String[] args) {
        //创建集合
        ArrayList arrayList = new ArrayList();
​
        //添加元素
        Student s1 = new Student("张三",10);
        Student s2 = new Student("李四",15);
        Student s3 = new Student("王五",18);
​
        arrayList.add(s1);
        arrayList.add(s2);
        arrayList.add(s3);
​
        System.out.println(arrayList.size());
        System.out.println(arrayList.toString());
​
        //删除元素
        arrayList.remove(s2);
        System.out.println(arrayList);
​
        //遍历
        //1.使用迭代器
        Iterator it = arrayList.iterator();
        while (it.hasNext()){
            Student s = (Student) it.next();
            System.out.println(s);
        }
​
        //2.列表迭代器
        ListIterator lit = arrayList.listIterator();
        while (lit.hasNext()){
            Student s = (Student) lit.next();
            System.out.println(s);
        }
​
        while (lit.hasPrevious()){
            Student s = (Student) lit.previous();
            System.out.println(s);
        }
​
        //判断
        System.out.println(arrayList.contains(s1));
​
        //查找
        System.out.println(arrayList.indexOf(s1));
    }
}
​

5、Vector

package Collection;
​
import java.util.Enumeration;
import java.util.Iterator;
import java.util.ListIterator;
import java.util.Vector;
​
//Vector演示
public class Test06 {
    public static void main(String[] args) {
        //创建集合
        Vector vector = new Vector();
​
        //1.添加元素
        vector.add("草莓");
        vector.add("橘子");
        vector.add("苹果");
        vector.add("山楂");
​
        System.out.println(vector);
​
        //2.删除元素
        vector.remove("草莓");
​
        System.out.println(vector);
​
        //3.遍历
​
        Iterator it = vector.iterator();
        while (it.hasNext()){
            String s = (String) it.next();
            System.out.println(s);
        }
​
​
        ListIterator i1 = vector.listIterator();
        while (i1.hasNext())
        {
            String s = (String) i1.next();
            System.out.println(s);
​
        }
​
​
        //使用枚举器
        Enumeration en = vector.elements();
        while (en.hasMoreElements()){
            Object e = en.nextElement();
            System.out.println(e);
        }
​
        //4.判断
        System.out.println(vector.contains("西瓜"));
        System.out.println(vector.isEmpty());
​
        //5.vector其他方法
        vector.firstElement();
        vector.lastElement();
        Object o = vector.elementAt(0);
        System.out.println(o);
​
​
    }
}
​

6、LinkedList

package Collection;
​
import java.util.Iterator;
import java.util.LinkedList;
​
//LinkedList集合
public class Test07 {
    public static void main(String[] args) {
        //创建集合
        LinkedList list = new LinkedList();
​
        //1.添加元素
        Student s1 = new Student("刘德华",5);
        Student s2 = new Student("张学友",5);
        Student s3 = new Student("郭富城",5);
​
        list.add(s1);
        list.add(s2);
        list.add(s3);
        System.out.println(s1);
        System.out.println(list);
​
        //2.删除
        list.remove(1);
        System.out.println(list);
​
        //3.遍历
        //for
        for (int i = 0;i<list.size();i++){
            System.out.println(list.get(i));
        }
        System.out.println("=================");
​
        //增强for
        for (Object object:list) {
            Student s = (Student) object;
            System.out.println(s);
        }
​
        //使用迭代器
        Iterator iterator = list.iterator();
        while (iterator.hasNext())
        {
             Student s = (Student) iterator.next();
             System.out.println(s);
            }
​
        //4.判断
        System.out.println(list.contains(s1));
        System.out.println(list.isEmpty());
​
        //5.获取
        System.out.println(list.indexOf(s1));
​
    }
}
​

!ArrayList和LinkedList的区别

(1、1.2 )

 

ArrayList : 是数组,空间连续、有角标、查询快、增删慢。

LinkedList : 是一个双向链表,Node、有first和Last,具有方向的一个链表,查询慢,增删快

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值