首页 > 技术文章 > 集合

hcjk12580 2019-12-06 21:40 原文

集合

集合ArrayList 可以添加重复数据

ArrayList<e> list = new ArrayList<e>();

e:表示泛型----什么数据类型,

如果是基本数据类型就用包装类

如果不加<e>,那么集合可以同时存放基本数据类型和String类型

集合长度 size()方法,获取集合长度.

集合增加

add(Object obj);方法给集合添加数据,

add(int index, Object obj);在指定下标index位置处添加obj数据;

1.index不能超出原来集合长度

2.如果下标index的位置上有值,就会把下标和之后的值往后移,把数据添加到下标index位置上.

集合删除

remove(Object obj)方法 集合删除

如果obj数据不是int类型和char类型,就查找第一个然后把它删除

如果obj是int类型和char类型,就会默认为是下标,找到对应下标的值删除

int类型和char类型要删除的话,必须使用对应的封装包. int -----Integer. char -----Charatcer.

集合修改

set(int index, Object obj)方法,下标index 新的值obj

集合查找

indexOf ();方法,放回数据第一次找到的下标,没有放回-1

LastIndexOf();反向查找对应数据的下标,返回下标

contains();查找数据,找到返回true,没有找到返回false

get();查找对应下标,放回该下标存放的值

 

判断集合是否为空 isEmpty();

清空集合 clear();

 

Verctor集合与ArrayList集合

1.都是List接口下的集合;

2.ArrayList的方法和实现基本上和Vertor一样,底层是数组实现

区别:

1.Vector的方法都是线性安全的,ArrayList没有考虑线性安全问题.

2.ArrayList在一些算法上做了优化,效率更高.

ArrayList与LinkedList区别

1.ArrayList底层是数组实现,LinkedList底层是链表实现

1.1 在Java中链表就是自己实现了一个类,在类中记录了前一个和后一个的地址,每次查找都需要找到前一个或后一个才能往前或往后找到

2.ArrayList查找速度快,但删除和插入的速度慢

3.LinkedList删除和插入的速度快,但查找速度慢

4.LinkedList有自己独有的方法:addFirst addLast,removeFirst,rnoveLast

List接口下的集合特点

1.都是有序的(按照添加顺序获取)

2.都有下标

3.可以重复

Set接口下的集合特点

1.没有下标

2.无序的

3.不能重复(会覆盖)

 

Set接口的集合判断是否重复是通过hash值是否相等判断

HashSet集合与TreeSet集合区别

TreeSet集合放入进去的对象必须实现Comparable接口,并且实现Comparable接口的compareTo方法之后,就可以自动排序,(存储地址不变)

Comparable接口与Comparator接口的区别

1.Comparable接口在Java.lang包,Comparator接口在Java.util包

2.Comparable接口下的compareTo方法只需一个参数,在实体类实现

Comparator接口下的compare方法需要两个参数,在另外一个类或内部类实现

它们都是只有一个方法

在compareTo方法或compare方法中,自定义排序规则

注意:compareTo方法和compare方法返回的只需要是正数或负数就可以了

Collections

在Java.util包,集合的工具包,一个抽象方法

只能List集合使用,Set集合必须转换成List集合才可以使用

sort方法一个参数时,实体类必须实现Comparable接口

Collections.sort(list);//List泛型集合

sort方法两个参数时,必须另外一个类实现Comparator接口

Collections.sort(list,new StudentCompare()); //List泛型集合,实现Comparator接口的类

shuffle方法进行字符串随机乱序

Collections.shuffle(list);//List泛型集合

 

集合遍历

1.for循环 只适合List接口下的集合

2.foreach循环

3.迭代器Iterator

集合转换类型
        Set<Student> set = new TreeSet<Student>();
set.add(stu1);
set.add(stu2);
set.add(stu3);
set.add(stu4);

for (Student student : set) {
System.out.println(student);
}
System.out.println("======================");
//Set集合转换List集合
List<Student> list = new ArrayList<Student>(set);

 

推荐阅读