JAVA基础之集合

一、集合相比数组的优势

  1. 不限制长度,动态改变
  2. 可以频繁的对数据进行增删
  3. 可以存储具有一对一关系的数据
  4. 可以轻松解决数据重复问题

二、集合框架的体系结构

  • Collection

    1. List(下面都是List的实现类)

      定义:元素有序并且可以重复的集合,称为序列

      • ArrayList(查找或者更新元素)

        底层由数组实现,在列表尾部插入或者删除数据非常有效

        1. 方法:

          get():获取单个数据 
          size():获取长度
          add(Object o):直接添加对象进去
          add(index i,Object o):将指定对象添加到对应的下标处
          remove(index):移除对应下标的数据
          remove(Object o):移除对象
          
        2. 案例(向ArrayList中添加字符串)

          package com.imooc.set;
          import java.util.List;
          import java.util.ArrayList;
          
          public class ListDemo1 {
          	public static void main(String[] args) {
          		List list=new ArrayList();
          		list.add("java");
          		list.add("c++");
          		list.add("php");
          		list.add("swift");
          		//输出元素个数
          		System.out.println("列表中元素的个数为:"+list.size());	
          		System.out.println("*******************");
          		for(int i=0;i<list.size();i++) {
          			System.out.println(list.get(i));//通过get获取元素
          		}
          		System.out.println("*******************");
          		list.remove("swift");
          		for(int i=0;i<list.size();i++) {
          			System.out.println(list.get(i));//通过get获取元素
          		}
          	}
          }
          

          输出结果:

          列表中元素的个数为:4
          *******************
          java
          c++
          php
          swift
          *******************
          java
          c++
          php
          
      • LinkList(待补充)

    2. Queue

    3. Set(下面都是Set的实现类)

      定义:元素无序并且不可以重复的集合,称为集。

      • HashSet(适用于存取和查找的情况)

        是Set的一个重要实现类,称为哈希集,元素无序且不可以重复

        1. 方法:

          iterator():构造迭代器
          contains():查找元素
          
        2. 案例:

          package com.imooc.set;
          
          import java.util.HashSet;
          import java.util.Iterator;
          import java.util.Set;
          
          public class WordDemo {
          	public static void main(String[] main) {
          	// 目的:将英文单词添加到HashSet中
          	Set set=new HashSet();
          	// 向集合中添加元素
          	set.add("blue");
          	set.add("red");
          	set.add("black");
          	set.add("yellow");
          	set.add("white");
          	// 显示集合的内容
          	System.out.println("集合中的元素为:");
          	Iterator it = set.iterator();//构造迭代器
          	// 遍历迭代器并输出元素
          	while (it.hasNext()) {
          		System.out.print(it.next() + "   ");
          	}
          	
          	System.out.println();
          	// 在集合中插入一个相同字符串
          	set.add("white");
          	it = set.iterator();
          	// 遍历迭代器并输出元素
          	System.out.println("**************************");
          	System.out.println("插入重复元素后的输出结果为:");
          	while (it.hasNext()) {
          		System.out.print(it.next() + "   ");
          	}
          	//插入失败,但是不会报错
          	
          	//查找
          	System.out.println("\n**************************");
          	if(set.contains("white")) {//用contains查找白色
          		System.out.println("找到白色了!");
          	}else {
          		System.out.println("没有找到");
          	}
          	//删除
          	System.out.println("************************");
          	set.remove("red");//删除红色
          	it = set.iterator();
          	while (it.hasNext()) {
          		System.out.print(it.next() + "   ");
          	}
          	}
          }
          
          

          结果:

          集合中的元素为:
          red   blue   white   black   yellow   
          **************************
          插入重复元素后的输出结果为:
          red   blue   white   black   yellow   
          **************************
          找到白色了!
          ************************
          blue   white   black   yellow   
          
  • Map

    1. 形式

      数据以键值对(key-value)的形式存储的

    2. 特点

      • key的值是唯一的,value不是唯一
      • 可以通过key快速找到value
      • 一个key最多只能映射一个value
    3. HashMap(Map的实现类)

      • 使用的方法:

        entrySet();//获得Map对象的所有Key-value
        keySet();//获得Map对象所有的Key
        getKey();//获得key的值
        getValue();//获得value的值
        
      • 案例:

        package com.imooc.set;
        
        import java.util.HashMap;
        import java.util.Iterator;
        import java.util.Map;
        import java.util.Map.Entry;
        import java.util.Scanner;
        import java.util.Set;
        
        public class DictionaryDemo {
        
        	public static void main(String[] args) {
        		Map<String,String> animal=new HashMap<String,String>();
        		System.out.println("请输入三组单词对应的注释,并存放到HashMap中");
        		Scanner console=new Scanner(System.in);
        		//添加数据
        		int i=0;
        		while(i<3){
        			System.out.println("请输入key值(单词):");
        			String key=console.next();
        			System.out.println("请输入value值(注释):");
        			String value=console.next();
        			animal.put(key, value);
        			i++;
        		}
        		
        		//打印输出value的值(直接使用迭代器)
        		System.out.println("*****************************************");
        		System.out.println("使用迭代器输出所有的value:");
        		Iterator<String> it=animal.values().iterator();
        		while(it.hasNext()){
        			System.out.print(it.next()+"    ");
        		}
        		System.out.println();
        		System.out.println("*****************************************");
        		
        		//打印输出key和value的值
        		//通过entrySet方法
        		System.out.println("通过entrySet方法得到key-value:");
        		Set<Entry<String, String>> entrySet=animal.entrySet();
        		for(Entry<String, String> entry:entrySet){
        			System.out.print(entry.getKey()+"-");;
        			System.out.println(entry.getValue());
        		}
        		System.out.println();
        		System.out.println("*****************************************");
        		
        		//通过key找到value并输出
        		//使用keySet方法
        		System.out.println("请输入要查找的单词:");
        		String strSearch=console.next();//从键盘接收的数据
        		//1.取得keySet
        		Set<String> keySet=animal.keySet();//先将所有的key放在集合当中
        		//2.遍历keySet
        		for(String key:keySet){
        			if(strSearch.equals(key)){
        				System.out.println("找到了!"+"键值对为:"+key+"-"+animal.get(key));
        				break;
        			}else {
        				System.out.println("对不起,没有找到!");
                          break;
        			}
        		}
        	}
        }
        
      • 结果:

        请输入三组单词对应的注释,并存放到HashMap中
        请输入key值(单词):
        1
        请输入value值(注释):
        猫
        请输入key值(单词):
        2
        请输入value值(注释):
        狗
        请输入key值(单词):
        3
        请输入value值(注释):
        猪
        *****************************************
        使用迭代器输出所有的value:
        猫    狗    猪    
        *****************************************
        通过entrySet方法得到key-value:
        1-猫
        2-狗
        3-猪
        
        *****************************************
        请输入要查找的单词:
        2
        找到了!键值对为:2-狗
        
  • 注意事项:

    1. 集合在java.util包中,使用时需要导入

    2. 范型

      作用:限制集合的类型

      Set<Cat> set=new HashSet<Cat>();
      
    3. 通过键盘输入数据

      import java.util.Scanner;
      
      Scanner console=new Scanner(System.in);
      String key=console.next();//将输入的值赋值给key
      
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值