Java的集合(Collection)

集合是java中提供的一种容器,可以用来存储多个数据。

集合和数组的区别:

  • 数组的长度是固定的,集合的长度是可变的。
  • 数组中存储的是同一类型的元素,可以存储基本数据类型值。集合存储的都是对象。而且对象的类型可以不一致。在开发中一般当对象多的时候,使用集合进行存储。

Collection的常用功能:

  1. add():把给定的对象添加到当前集合中 。
  2. clear():清空集合中所有的元素。
  3. remove(E e): 把给定的对象在当前集合中删除。
  4. contains(E e): 判断当前集合中是否包含给定的对象。
  5. isEmpty(): 判断当前集合是否为空。
  6. size(): 返回集合中元素的个数。
  7. toArray(): 把集合中的元素,存储到数组中。
  8. contains():集合是否包含某个元素。

List:

  1. ArrayList:底层数据结构是数组,查询快,增删慢,线程不安全,效率高,可以存储重复元素。
  2. LinkedList 底层数据结构是链表,查询慢,增删快,线程不安全,效率高,可以存储重复元素。
  3. Vector:底层数据结构是数组,查询快,增删慢,线程安全,效率低,可以存储重复元素。

ArrayList较为常用,现做详细讨论。

java.util.ArrayList 本质是可变数组,存储在内的数据称为元素。此类提供一些方法来操作内部存储 的元素。 ArrayList 中可不断添加元素,其大小也自动增长。

书写格式:ArrayList<E> list = new ArrayList<>(); 其中E为泛型,可以String, 某个类等类型。

代码示例:

import java.util.ArrayList;

public class Test {

    public static void main(String[] args) {
        ArrayList list = new ArrayList<Student>();
        Student s = new Student("张三");
        Student s1 = new Student("李四");
        Student s2 = new Student("王五");

        list.add(s);
        list.add(s1);
        list.add(s2);

    }
}

ArrayList的遍历:

1.使用for循环:

import java.util.ArrayList;

public class Test {

    public static void main(String[] args) {
        ArrayList list = new ArrayList<Student>();
        Student s = new Student("张三");
        Student s1 = new Student("李四");
        Student s2 = new Student("王五");

        list.add(s);
        list.add(s1);
        list.add(s2);


        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }

    }
}

2.使用Iterator迭代集合中元素:

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

public class Test {

    public static void main(String[] args) {

        ArrayList<String> list = new ArrayList<>();
        String s = "张三";
        String s1 = "李四";
        String s2 = "王五";

        list.add(s);
        list.add(s1);
        list.add(s2);
        

        Iterator<String> it = list.iterator();

        while(it.hasNext()){ 
            String ss = it.next();
            System.out.println(ss);
        }

    }
}

Set:使用较少,它与list的区别:

  1. list是有序的,set是无序的。
  2. list元素可以重复,set不能重复,重复的会覆盖。
  3. list可以直接通过索引获取元素,set不能。

Map:

  1. Collection中的集合,元素是孤立存在的(理解为单身),向集合中存储元素采用一个个元素的方式存储。
  2. Map 中的集合,元素是成对存在(键值对)的,每个元素由键与值两部分组成,通过键可以找对所对应的值。
  3. Collection 中的集合称为单列集合, Map 中的集合称为双列集合。
  4. Map 中的集合不能包含重复的键,值可以重复;每个键只能对应一个值。

常用方法:

  1. public V put(K key, V value) : 把指定的键与指定的值添加到Map集合中。
  2. public V remove(Object key) : 把指定的键 所对应的键值对元素 在Map集合中删除,返回被删除元素的 值。
  3. public V get(Object key) 根据指定的键,在Map集合中获取对应的值。
  4. public Set<k> keySet() : 获取Map集合中所有的键,存储到Set集合中。
  5. public Set<Map.Entry<K,V>> entrySet() : 获取到Map集合中所有的键值对对象的集合(Set集合)。

import java.util.HashMap;

public class Test {

    public static void main(String[] args) {

        HashMap<Integer, String> map = new HashMap<>();

        map.put(1, "汽车");
        map.put(2, "苹果");
        map.put(3, "桃子");
        System.out.println(map); //输出

        System.out.println(map.remove(1));
        System.out.println(map);

        System.out.println(map.get(2));
        System.out.println(map.get(3));

    }
}



Map集合遍历键找值方式:


import java.util.HashMap;
import java.util.Set;

public class Test {

    public static void main(String[] args) {

        HashMap<String, String> map = new HashMap<String,String>();
        //添加元素到集合
        map.put("胡歌", "霍建华");
        map.put("郭德纲", "于谦");
        map.put("薛之谦", "大张伟");

        Set<String> keys = map.keySet();
        // 增强for循环,遍历键集 得到 每一个键
        for (String key : keys) {
            //key 就是键
            //获取对应值
            String value = map.get(key);
            System.out.println(key+"的CP是:"+value);
        }
        
    }
}



Map集合遍历键值对方式:

HashMap<String, String> map = new HashMap<String,String>();
// 添加元素到集合
map.put("胡歌", "霍建华");
map.put("郭德纲", "于谦");
map.put("薛之谦", "大张伟");
// 获取 所有的 entry对象 entrySet
Set<Entry<String,String>> entrySet = map.entrySet();
// 遍历得到每一个entry对象
for (Entry<String, String> entry : entrySet) {
// 解析
String key = entry.getKey();
String value = entry.getValue();
System.out.println(key+"的CP是:"+value);
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值