java单列集合Collection超详细讲解

单列集合,分为集合里面数据可重复的(List),集合里面数据不可重复的(Set)集合。

List集合常用的分为:ArrayList和LinkedList。

Set集合常用的分为:HashSet和TreeSet。

Collection集合

特点:

Collection集合是单列集合的顶层接口。它是个接口!

JDK不提供此接口的任何直接实例,它提供具体的子接口实现,如(Set和List)实现。

所以我们用的话,要使用多态的方式!具体的实现类ArrayList。

Collection集合常用方法:

public static void main(String[] args){
    //创建集合
    Collection<String> c = new ArratList<String>();
    //添加方法, boolean add();
    c.add("hello");

    //移除方法,boolean remove();
    c.remove("hello");

    //清空集合所有元素 void Clear(); 
    c.clear();

    //判断集合是否存在指定元素 boolean contains();
    c.contains("hello");

    //判断集合是否为空 boolean isEmpty();
    c.isEmpty();

    //判断集合的长度,也就是集合中元素的个数 int size();
    c.size();
}

Collection集合遍历的方法:

迭代器 Iterator方法
 

Collection<String> c = new ArratList<String>();

//返回集合中元素的迭代器,通过集合的iterator()方法得到 
Iterator<String> it=c.iterator();

//boolean hasNext();如果有迭代有更多元素,返回true
while (it.hasNext()){
//只要为true,就不停的打印集合中的元素。
    System.out.printIn(it.next());
}

List集合

list集合我们有两个常用子类:ArrayList(查询快,增删慢)和LinkedList(查询慢,增删快)。

特点:

有序:存储和去除的元素顺序一致。 可重复:存储的元素可以重复。

List集合特有方法:

List集合是继承了Collection 集合,所以 Collection有的方法List都有。

    List<String> list = new ArrayList<String>();
    list.add("hello");
    list.add("word");
    
//在指定的位置插入指定的元素 void add(int index,E element);
    list.add(1,"java");

//删除指定索引处的元素,返回被删除的元素 E remove(int index);
    list.remove(1); //返回word

//修改指定索引出的元素,返回修改的元素 E set(int index,E element);
    list.set(0,"javaa");  //返回hellow

//返回指定索引位置的元素
    list.get(1);

List集合遍历:

for循环遍历

//遍历并打印到控制台
for(int i=0; i<list.size(); i++){
    String s=list.get(i);
    System.out.printIn(s);
}

当然List集合也可用用迭代器遍历。跟上面的一样,这里不再写了。

还有一种方法,就是增强for循环遍历。

for(String s : list){
    System.out.printIn(s);
}

ArrayList 我在这里就不多说了,基本上集合有的它都有。

下面说一下LinkedList,它底层是由链表存储的。

LinkedList集合的特有功能:

我就不放代码了,麻烦了。累的慌,哈哈。用的话,直接创建Lined List集合,然后调用就行了。

Set集合

set集合也是继承Collection集合,它有的set集合都有。

Set集合特点:

不包含重复元素的集合,没有带索引的方法,所以不能用普通的for循环遍历。可以通过增强for循环遍历。

因为Set也是个接口,必须用多态的方式,用它的实现类,HashSet.

Set<String> set = new HashSet<String>();
set.add("hello");
set.add("word");

for(String s : set){
    System.out.printIn(s);
}

HashSet集合

HashSet集合特点

底层数据结构是哈希表,对集合的迭代顺序不做任何保证,就是存储顺序和取出顺序不一定一致。

没有带索引的方法,不能用普通的for循环遍历。不包括重复元素。

问题: 我们用HashSet集合,存储数据的时候,不同的对象,但是所有属性的值都相同,如何保持唯一性。

说白了就是,例如:两个学生都叫小王,18岁。那么用HashSet集合,是存不进去的,但是存进去了。

找到学生类,按下alt+insert 自动添加equals()和hashCode()。直接Next自动生成完事。

TreeSet集合

TreeSet集合特点

元素有序,说的有序不是存储和取出的顺序,指的是按照一定的规则进行排序,具体方式取决构造方法。

没有带索引的方法,不能用普通的for循环遍历。不包括重复元素。

案例:

TreeSet<Integer> ts = new TreeSet<Integer>();
    ts.add(10);
    ts.add(30);
    ts.add(20);
    ts.add(50);
    ts.add(40);
    for(Integer i : ts){
        System.out.printIn(i);
    }

//输出结果
10
20
30
40
50

如果想做出特殊的排序方法,我们要实现 Comparable接口 并且重写compareTo方法

猜你喜欢

转载自blog.csdn.net/weixin_44126152/article/details/106365302
今日推荐