集合

一.集合的概念

  • 对象的容器,定义对多个对象进行操作的方法。
集合和数组的区别?
  • 1.数组长度固定,集合长度不固定(自动申请)。

  • 2.数组可以存储基本类型和引用类型,集合只能存储引用类型

  • Java.util.*包中

Collection父接口
List子接口
ArrayLis实现类
LinkedList实现类
Vector实现类
Set子接口
HashSet实现类
SortedSet子接口
TreeSet实现类

二.Collection父接口中的常用方法

  • boolean add(Object obj)添加一个对象。
  • boolean addAll(Collection c)将一个集合中的所有对象添加到此集合中。
  • void clear()清空此集合中的所有对象。
  • boolean contains(Object o)检查此集合中是否包含o对象
  • boolean equals(Object o)比较此集合是否与指定对象相等
  • boolean isEmpty()判断此集合是否为空
  • boolean remove(Object o)从此集合中移除o对象
  • boolean size()返回集合中 的元素个数
  • boolean toArray()将此集合转换成数组

遍历集合

//1.增强for
for(Object obj : collection){
	System.out.println(obj);
}
//2.迭代器方法
1.hasNext()有没有下一个元素
2.next()获取下一个元素指针向后移
3.remove()

创建迭代器
Iterator it = collection.iterator();

使用hasNext
while(it.hasNext){
	String s =it.next();
	it.remove();//在迭代器中不能用集合中的remove方法
}

三.List集合

特点:有序,有下标,元素可以重复。
方法:

1.void add(int index,Object o)//在index位置中插入对象o
2.boolean addall(int index,Object 0)//将以个集合中的元素添加到此集合中的index位置。
3.Object get(int index)//返回集合中指定位置的元素
4.set(int index,E element)//用指定元素替换列表中指定位置的元素
5.List subList(int formIndex,int toIndex)//返回formIndex和toIndex之间的集合元素。
List的 迭代器 
listIterator()
方法
add()//将指定元素插入列表
hasNext()
hasPreious()//如何以逆向遍历列表,列表迭代器有多个元素,则返回true
next()
nextIndex()返回对next后续调用所返回元素的索引
provious()返回列表的前一个元素
previousIndex()返回对provious的后续调用所返回元素的索引
remove()
set(E e)用指定元素替换next或previous返回的最后一个元素

简单示例:

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class Test {
    public static void main(String[] args){
        Collection collection = new ArrayList();

        //数值类型
        collection.add(32);
        //字符串
        collection.add("YjiaL");
        //浮点型
        collection.add(3.1415926F);
        //布尔类型
        collection.add(false);
        //对象类型
        collection.add(new Test.Student("YjiaLiang",20));

        //遍历打印输出集合元素
        //1.增强for
        for (Object obj: collection) {
            System.out.println(obj);
        }

        //2.迭代器
        Iterator iterator = collection.iterator();
        while(iterator.hasNext()){
        	//调用next()方法
            System.out.println(iterator.next());
            //在迭代中只能使用迭代器的remove()方法
        }
    }
    static class Student{
        private String name;
        private int age;

        public Student() {super();}

        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 void setAge(int age) {
            this.age = age;
        }

        @Override
        public String toString() {
            return "Student{" +
                    "name='" + name + '\'' +
                    ", age=" + age +
                    '}';
        }
    }
}

//迭代器从后往前
ListIterator it = list.ListIterator();
while(it.hasPrerious()){
	//把指针重后往前
	System.out.println(it.previousIndex()+":"+it.previous());
}

4.集合

ArrayList

  • 数组结构实现,查询快,增删慢,线程不安全

源码分析:

DEFAULT_CAPACITY=10 //默认容量

如果向集合中添加元素 容量0,添加了一个元素后容量为10 .
每次扩容都是原来的1.5倍

Vector

  • 数组结构实现,查询快,增删慢;
  • JDK1.0版本,运行效率慢,线程安全。
 Vector vector = new Vector();
        vector.add("草莓");
        vector.add("你好");
        vector.add("aa");
        System.out.println("元素个数"+vector.size());

        //遍历
        //使用枚举器
        Enumeration elements = vector.elements();
        while(elements.hasMoreElements()){
            String o = (String)elements.nextElement();
            System.out.println(o);
            elements.
        }
        //4.判断
        System.out.println(vector.contains("你好"));
        System.out.println(vector.isEmpty());
        //Svector方法
        //firsetElement,last

LinkedList

  • 链表结构实现 增删快,查询慢。
LinkedList linkedList = new LinkedList();

        linkedList.add("草莓");
        linkedList.add("菠萝");
        linkedList.add("西瓜");
        linkedList.add("银桃");

        System.out.println("元素个数"+linkedList.size());
        linkedList.remove(0);//根据下标和数值来删除
        System.out.println("删除后"+linkedList.toString());

        //isEmpty判断是否为空,如为空会返回true
        if(!linkedList.isEmpty()){
            System.out.println(true);
        }
        //linkedList.clear()清空集合

        //遍历集合
        //1.遍历
        for (int i = 0; i < linkedList.size(); i++) {
            //获取元素的值
            System.out.println(linkedList.get(i));
        }
        //2.增强for
        for (Object obj: linkedList) {
            System.out.println(obj);
        }
        //3.list迭代器实现遍历
        ListIterator listIterator = linkedList.listIterator();
        while(listIterator.hasNext()){
           System.out.println(listIterator.next());
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YJiaStudy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值