Java集合1

集合概述

集合是Java中存储对象数据的一种容器

集合特点:

①集合大小不固定,启动后可以动态变化,类型也可以选择不固定;

②集合非常适合做元素的增删操作;

③集合中只能存储引用类型的数据,如果要存储基本类型数据可以选择包装类。

④集合都是支持泛型的,集合和泛型都只支持引用数据类型。

集合适合场景:

数据个数不确定,需要进行增删元素的时候;

集合类体系结构

Collection集合

Collection是单列集合的祖宗接口,它的功能是全部单列集合都可以继承使用的。

Collection 常用API
public boolean add (E,e) 把给定对象添加到当前集合中
public void clear() 清空集合中所有的元素
public boolean remove(E,e) 把给定的对象在当前集合中删除
public boolean isEmpty() 判断当前集合是否为空
public boolean contains(Object obj)判断当前集合中是否包含给定的对象
public int size() 返回元素个数
public Obiject[] toArray() 把集合中的元素,存储到数组中
Collection <String> c=new ArrayList();
//1.添加元素
c.add("Java");
c.add("HTML");
c.add("Java");
//2.清空集合元素
c.clear;
//3.判断集合是否为空
System.out.println(c.isEmpty);      //true
//4.获取集合的大小
c.add("Java");
c.add("HTML");
c.add("Java");
System.out.println(c.size());
//5.删除元素,如果重复,只删除第一个
System.out.println(c.remove("Java"));        
System.out.println(c);        //HTML,Java
//6.判断集合中是否包含该元素
System.out.println(c.contains("Java"));    //true
//7.把集合转换成数组
Object[]arrs=c.toArray();
//8.合并两个集合
Collection <String> c1=new ArrayList<>();
c1.add("赵敏“);
c.addAll(c1);
System.out.println(c1);        //赵敏
System.out.println(c);        //HTML Java  赵敏

Collection集合的遍历方式

方法一:使用迭代器进行遍历

迭代器在Java中的代表是Iterator,迭代器是集合的专用遍历方式

Collection集合获取迭代器
Iterator<E> iterator() 返回集合中的迭代器对象,该迭代器对象默认值指向当前集合的0索引
Iterator中的常用方法
public boolean hasNext() 询问当前位置是否有元素存在,存在即返回true,不存在则返回false
E next() 获取当前位置的元素,并同时将迭代器对象移到下一位置,注意防止取出越界
Collection<String>lists=new ArrayList<>();
lists.add("赵敏”);
lists.add("小赵");
lists.add("苏苏");
//1.得到当前集合的迭代器对象
Iterator<String> it=lists.iterator();
//2.定义while循环
while(it.hasNext){
    String ele=it.next();
    System.out.pritln(ele);
}
方法二:foreach循环(也叫做增强for循环)

特点:①既可以遍历集合也可以遍历数组

②在JDK5之后出现的,其内部原理是一个Interator迭代器,遍历集合相当于是迭代器的简化写法

③实现Iterable接口的类才可以使用迭代器和增强for(Collection接口已经实现了Iterable接口)

格式:

for(元素数据类型 变量名:数组或Collection集合){

//在此处使用变量即可

}

Collection<String> lists=new ArrayList<>();
lists.add("赵敏");
lists.add("小赵");
lists.add("苏苏");
for(String ele:lists){
    System.out.println(ele);
}
方式三:Lambda表达式
Collection<String> lists=new ArrayList<>();
lists.add("赵敏");
lists.add("小赵");
lists.add("苏苏");
list.forEach(s->{
    System.out.println(s);
});

List 系列集合

特点:

①ArrayList,LinkedList:有序,可重复,有索引

②有序:存储和取出员元素顺序一致

List集合特有方法

void add(int index,E element) 在指定位置插入特定的元素
E remove(int index) 删除指定索引处的远处,返回被删除的元素
E set(int index,E element) 修改指定索引处的元素,返回被修改的元素
E get(it index) 返回指定索引处的元素
List集合遍历方式:
①迭代器
②增强for循环
③Lambda表达式
④for循环(因为List集合存在索引)
List<String> list=new ArrayList<>();
list.add("Java");
list.add("Java");
list.add("MySQL");
list.add("MYSQL");
//1.在某个索引位置插入元素
list.add(2,"HTML");
System,out,println(list);    //Java Java HTML MYSQL MYSQL
//2.根据索引删除元素,返回被删除元素
System.out.println(list.remove(2));        //HTML
System.out.println(list);        //Java Java MYSQL MYSQL
//3.根据索引获取元素,返回集合指定位置的元素
System.out.println(list.get(2));        //MYSQL
//4.修改索引位置的数据,返回修改前的数据
System.out.println(list.set(1,"高高");    //Java
System.out.println(list);     //Java 高高  MYSQL MYSQL

ArrayList集合

底层原理:①基于数组实现的,根据索引定位元素快,增删需要做元素的位移操作

②第一次创建集合并添加第一个元素的时候,在底层创建一个默认长度为10的数组,超过容量,扩容,原来的1.5倍

LinkedList集合

双链表,查询慢,首尾操作是极快的。

LinkedList可以完成队列结构和栈结构(双链表)

LinkedList特有功能
public void addFirst(E e) 在该列表开头插入特定元素
public void addLast(E e) 将指定元素追加到此列表的末尾
public E getFirst() 返回列表第一个元素
public E getLast() 返回列表中的最后一个元素
public E removeFirst() 从列表中删除并返回第一个元素
public E removeLast() 从列表中删除并返回最后一个元素
//1.栈
LinkedList<String> stack=new LinkedList<>();
//压/入栈
stack.addFirst("第一颗子弹");
stack.addFirst("第二颗子弹");
stack.addFirst("第三颗子弹");
//出/弹栈
System.out.println(stack.removeFirst());
System.out.println(stack.removeFirst());
System.out.println(stack);
//2.队列
LinkedList<String> queue=new LinkedList<>();
//入队
queue.addLast("1号");
queue.addLast("2号");
queue.addLast("3号");
//出/弹栈
System.out.println(queue.removeFirst());
System.out.println(queue.removeFirst());
System.out.println(queue);

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值