Java集合框架:List、Set、Map等常用集合类的使用、实现原理、优缺点等

Java集合框架:两种类型的容器:集合Collection,存储一个元素集合;图Map,存储键、值对映射。
集合框架:

Collection有三种接口List、Set、Queue

  1. List接口

元素顺序有下标,查找效率高,插入删除效率低下,内容可以重复

void add(int index, E element):向指定位置处添加元素,无返回值类型
get(int index):
indexOf(Object o):
E remove(int index):
E set(int index,E element):

Lst接口的三个常用实现类:

ArrayList 数组实现,查询快,增删慢
LinkedList 链表实现,查询慢,增删快
Vector 数组实现,查询快,增删慢

ArrayList的增删改查操作

public class Test {
    public static void main(String [] args){
        /**
         * 集合框架
         * 集合:一个对象,用来储存其他多个对象
         * ArrayList 能更好的代替数组
         */
        
        List<String> list = new ArrayList<>();
        list.add("Hello");
        list.add("World");
        list.add("HAHAHAHA");
        for(String str:list){
            System.out.println(str);
        }
        //第二种遍历
        String[] strArray =new String[list.size()];
        list.toArray(strArray);
        for(int i=0;i<strArray.length;i++){
            System.out.println(strArray[i]);
        }
        //第三种遍历,使用迭代器进行相关遍历
        Iterator<String> ite =list.iterator();
        while (ite.hasNext()){
            System.out.println(ite.next());
        }
      // ArrayList的增删改查,LinkedList和Vector的增删改查是一样的
        ArrayList<String> list1 = new ArrayList<String>();
        list1.add("123");
        list1.add("456");
        list1.add(0,"昨天周六");

        list1.set(1,"不上课");
        System.out.println(list1);
        System.out.println(list1.get(1));
        System.out.println(list1.remove(2));
        for (String string:list1){
            System.out.println(string);
        }}}

运行结果:
在这里插入图片描述

  1. Set接口

无序无下标,元素不可以重复,实现类有:HashSet、LinkedHashSet、TreeSet

add(E e):向集合中添加一个元素。返回值类型为:boolean
contains(Object o):判断集合中是否包含某个元素,返回值为boolean
remove()
size()
import java.util.*;
import java.util.Set;
import java.util.Map;
import java.util.Map.*;
public class Test {
    public static void main(String [] args){
        //set 元素无序 不重复
        /**
         * Set 元素无顺序 内容不可重复
         * 方法全部继承自Collection接口
         * 遍历:迭代遍历或for-each遍历
         * */
        //set中判断元素不重复值的是元素内容不重复
        //Set<String> set = new HashSet<>();
        Set<String> set = new LinkedHashSet<String>();
        String s1 = new String("aaa");
        String s2 = new String("bb");
        String s3 = new String("ccc");
        String s4 = new String("aaa");

        set.add(s1);
        set.add(s2);
        set.add(s3);
        set.add(s4);
        for (String string:set){
            System.out.println(string+"\t");
        }
        set.remove(s3);
        System.out.println(set.contains(s4));
        System.out.println(set.add("aaa"));

        Iterator<String> ite =set.iterator();
        while(ite.hasNext()){
            System.out.println(ite.next()+'\t');
        }
        //Map示例
        Map<String,Integer> map =new HashMap<String, Integer>();
        map.put("a",1);
        map.put("b",2);
        map.put("c",3);
        map.put("d",4);
        map.put("e",5);

        System.out.println(map.get("d"));
        map.put("c",33);
        System.out.println(map.get("c"));
        map.remove("d");
        System.out.println(map);
        System.out.println(map.containsKey("e"));
        map.containsKey("5");
        System.out.println(map.size());
        System.out.println();
        //遍历key,能够取出键值对
        Set<String> set1 = map.keySet();
        for(String string: set1){
            Integer val = map.get(string);
            System.out.println(string+"\t"+val+"\n");
        }
        System.out.println();
        //遍历value
        Collection<Integer> values = map.values();
        for (Integer integer:values){
            System.out.println(integer+"\t");
        }
        System.out.println();
        //遍历键值对
        Set<Entry<String,Integer>> set2 = map.entrySet();
        for(Entry<String,Integer> entry:set2)
        {
            System.out.println(entry);
        }
    }
}

Map集合
Map结合的一个元素由一个键key和一个值value组成的
key不允许重复,value允许重复
Map集合常用方法:

V put(K key,V value)
V remove(Object key)
size()
boolean containsKey(Object key)
boolean containsValue(Object value)
import java.util.*;
import java.util.Set;
import java.util.Map;
import java.util.Map.*;
public class Test {
    public static void main(String [] args){       
       //Map示例
        Map<String,Integer> map =new HashMap<String, Integer>();
        map.put("a",1);
        map.put("b",2);
        map.put("c",3);
        map.put("d",4);
        map.put("e",5);

        System.out.println(map.get("d"));
        //修改值
        map.put("c",33);
        System.out.println(map.get("c"));
        map.remove("d");
        System.out.println(map);
        System.out.println(map.containsKey("e"));
        map.containsKey("5");
        System.out.println(map.size());
        System.out.println();
        //遍历key,能够取出键值对
        Set<String> set1 = map.keySet();
        for(String string: set1){
            Integer val = map.get(string);
            System.out.println(string+"\t"+val+"\n");
        }
        System.out.println();
        //遍历value
        Collection<Integer> values = map.values();
        for (Integer integer:values){
            System.out.println(integer+"\t");
        }
        System.out.println();
        //遍历键值对
        Set<Entry<String,Integer>> set2 = map.entrySet();
        for(Entry<String,Integer> entry:set2)
        {
            System.out.println(entry);
        }
    }
}

----未完待续

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值