Collection工具类(单类集合)

为什么要包装类:

基本数据类型使用起来虽然非常方便,但是没有对应的方法来操作这些基本类型的数据,可以使用一个类,把基本类型的数据装起来,在类中定义一些方法,这个类叫做包装类,我们可以使用类中的方法来操作这些基本类型的数据;

基本类型包装类
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charcharacter
booleanBoolean

从JDK1.5以后,开始支持自动装箱,自动拆箱;
从JDK1.7以后,右侧的尖括号内容可以不写内容,但是<>本身还是要写的。

Collection集合常用功能:

public boolean add(E e);把给定的对象添加到当前集合中; public void
clear();清空集合中的所有的元素; public boolean remove(E e);把给定的对象在当前集合中删除; public
boolean contains(E e);判断当前集合中是否包含给定元素; public boolean
isEmpty();判断当前集合是否为空; public int size();返回集合中元素的个数; public Object[]
toArray();把集合中的元素,存储到数组中;

1、list接口的特点:
  1. 有序的集合,存储元素和取出元素的顺序是一致的(存储123,取出123);
  2. 有索引,包含了一些带索引的方法;
  3. 允许存储重复的元素;

list接口中带索引的方法(特有)

  • public void add(int index,E element);将指定的元素添加到该集合中的指定位置上;
  • public E get(int index)返回集合中指定位置的元素;
  • public E remove(int index);移除列表中指定位置的元素,返回的是被移除的元素;
  • public E set(int index,E element);用指定元素替换集合中指定位置的元素,返回值的更新前的元素;
Arraylist

如果ArrayList集合来说,直接打印得到的不是地址值,而是内容;
如果内容为空,得到的是空的方括号[ ];

Arraylist:ArrayList<E> list = new ArrayList<>();

Array List常用方法:

  • public boolean add(E e);向集合当中添加元素,参数的类型和泛型一致;
  • public E get(int index);向集合当中获取元素,参数是索引编号,返回值就是对应位置的元素;
  • public E remove(int index);从集合当中删除元素,参数是索引编号,返回值就是被删除的元素;

public int size();获取集合的尺寸长度,返回值是集合中包含的元素个数;
操作索引的时候,一定要防止索引越界异常;

迭代器

Iterator接口(Ieerator主要用于迭代访问Collection中的元素)
Iterator迭代器是一个接口,我们无法使用,需要使用Iterator接口实现类的对象,获取实现类的方法是使用Collection接口中的方法,这个方法返回的就是迭代器的是实现类对象。

获取集合对应迭代器的方法:public Iterator iterator();

常用方法:

public E next();放回迭代的下一个元素; publicBoolean
hasNext();如果还有元素可以迭代,则返回true;

迭代器的使用步骤:

1.使用集合中的方法Iterator()获取迭代器的实现类对象,使用Iterator接口接收(多态)
2.使用Iterator接口中的方法hasNext()判断还有没有下一个元素;
3.使用Iterator接口中的方法next取出集合中的下一个元素。

代码实现

public class iter{
	public static void main(String[] args){
	Collection<String> coll = new ArrayList<>();//创建一个集合对象
	coll.add("A boy"); coll.add("can do");
	coll.add("everything"); coll.add("for girl");//添加元素
	Iterator<String> it = coll.Iterator();
	if(it.hasNext()){
		String b = it.next();
		System.out.println(b);
		}
	}
}

Linklist集合

  • 底层是一个链表结构,查询慢,增删快;
  • 里面包含了大量操作首尾元素的方法;
  • 注意:使用Linklist集合特有的方法,不能使用多态;
    常用方法
    添加方法;
  • public void addFirst(E e);将指定元素插入此列表的开头;
  • public void addLast(E e);将指定元素添加到此列表的结尾;
  • public void push(E e);将元素插入此列表所表示的堆栈;

获取方法:

  1. public E getFirst();返回此列表的第一个元素;
  2. public E getLast();返回此列表的最后一个元素;
    删除方法:
  3. public E removeFirst();移除并返回此列表的第一个元素;
  4. public E removeLast();一处并返回此列表的最后的一个元素;
  5. public E pop();从此列表所表示的堆栈处弹出一个元素;
  6. public boolean IsEmpty();如果链表不包含元素,则返回true;
set接口的特点:
  1. 不允许存储重复的元素;
  2. 没有索引,没有带索引的方法,也不能使用普通的for循环遍历;
Hashset特点:
  1. 不允许存储重复的元素;
  2. 没有索引,没有带索引的方法,也不能使用普通的for循环遍历;
  3. 是一个无需的集合,存储元素和取出元素的顺序有可能不一样;
  4. 底层是一个哈希表结构;
  5. 如果想要存储自定义类型的元素,需要重写hashcode()和equal();

LinkedHashset集合 extends HashSet;
特点:
底层是一个哈希值(数组+链表/红黑树)+链表;多了一条链表(记录元素的存储顺序),保证元素有序;有序不允许重复;

不允许
迭代器的实现原理
增强版for循环:底层使用的也是迭代器,使用for循环的格式,简化了迭代器的书写;
是JDK1.5之后出现的新特性。
Collectionextends Iterator:所有的单列集合都可以使用增强for;
public interface Iterator实现这个接口允许对象成为”foreach“语句的目标;

增强for循环:仅用来遍历集合和数组
格式:
for(集合/数组的数据类型 变量名: 集合名/数组名){
sout(变量名)
}
Collections集合工具类的方法
java.util.Collections 是集合工具类,用来对集合进行操作。部分方法如下:
public static boolean add(Collection c,T… elements):往集合中添加一些元素;
public static void shuffle(List<?> list);打乱顺序;打乱集合的顺序;
public static void sort(list list);将集合中的元素按照默认规则排序;
注意:被存储的集合里边存储的元素,必须实现Comparable接口,从写接口中的方法compareTo定义排序的规则;
自己(this)- 参数:为升序;
public static void sort(list list,Comparator<? super T>);将集合中元素按照指定规则排序;(自己百度了解一下)

Collections.addAll(list,"a","b","c","d","e","f");
//将元素添加到list集合中;
Collections.shuffle(list);//将集合中的元素顺序打乱;

可变参数
在JDK1.5以后,如果我们定义一个方法需要接受多个参数,并且多个参数类型一致,我们可以对其简化,…用在参数上,称之为可变参数。
使用前提:

当方法的参数列表数据类型已经确定,但是参数的个数不确定,就可以使用可变参数。

使用格式如下:

修饰符 返回值类型 方法名(参数类型… 形参名){ }

其实这个书写完全等价于:

修饰符 返回值类型 方法名(形参类型[ ] 形参名){ }

可变参数的原理
可变藏书底层就是一个数组,根据传递参数个数不同,会创建不同的数组,来存储这些参数;传递的参数个数,可以是0到很多个;
public static void method(int …b){

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值