集合

1.collection的常用方法

collection中有方法的重写

clear()  清空集合

hashCode() 返回集合哈希码值(重写了)

toString() 返回集合元素 (重写了)

equals()

contains(20)判断是否有指定元素

isEmpty()判断集合是否为空

remove() 移除元素

size()获取集合中的元素个数

toArray()将指定的集合转为数组

c.addAll(c2) 将c2集合中的所有元素添加到c集合中,c2集合不改变

c.containsAll(c2)  判断c集合是否包含此c2集合的所有元素

c.removeAll(c2)  删除c集合中c2集合的所有元素

retainAll()    保留当前集合与参数集合的公共元素,删除掉当前集合中不属于公共部分的元素

 //<Integer>为泛型,用来约束集合中的元素类型,一定为引用类型!Collection <Integer> c=new ArrayList<>();//2.向集合中存入多个数据c.add(100);c.add(200);c.add(300);c.add(400);c.add(500);System.out.println(c);//3.测试集合中的常用方法
//        c.clear();//清空集合System.out.println(c);System.out.println(c.hashCode());System.out.println(c.toString());System.out.println(c.equals(200));//fSystem.out.println(c.contains(200));//判断是否有指定元素System.out.println(c.isEmpty());//f 判断集合是否为空System.out.println(c.remove(200));//删除System.out.println(c);System.out.println(c.size());//获取集合中的元素个数Object[] objects = c.toArray();//将指定得集合c转为数组,使用多态思想,数组类型为objectSystem.out.println(Arrays.toString(c.toArray()));//4.测试多个集合之间的操作Collection<Integer> c2=new ArrayList<>();c2.add(1);c2.add(2);c2.add(3);System.out.println(c2);//[1, 2, 3]c.addAll(c2);//将c2集合中的所有元素添加到c集合中,c2集合不改变System.out.println(c);System.out.println(c.containsAll(c2)); //判断c集合是否包含此c2集合的所有元素System.out.println(c.removeAll(c2));//删除c集合中c2集合的所有元素System.out.println(c);c.add(999);/*retainAll()作用为保留当前集合与参数集合的公共元素,删除掉当前集合中不属于公共部分的元素*/System.out.println(c.retainAll(c2));System.out.println(c);c.add(1);System.out.println(c.retainAll(c2));System.out.println(c);

2.迭代器

迭代步骤:

①获取集合的迭代器 c.iterator

②判断集合中是否有下一个元素可以迭代 it.hasNext()

③获取当前迭代器迭代到的元素

  Iterator<Integer> it = c2.iterator();while (it.hasNext()){System.out.println("本次迭代到的元素:"+it.next());
//            Integer next = it.next();
//            System.out.println("本次迭代到的元素:"+next);

3.List接口

序列、有序的collection

特点:有下标、数据是有序的、允许存放重复的元素

方法同collection+特有方法

3.1特有方法1:addAll(1,list2)  将l参数集合中所有元素加到当前集合的1号索引处

特有方法2:

①add()可在指定索引处添加元素,且可以添加重复元素

②indexOf() 判断元素第一次出现的位置

③lastIndexOf 判断元素最后一次出现的位置

④get() 得到索引处的元素

⑤set() 指定索引处修改元素

⑥revome() 移除指定索引处的元素

package cn.tedu.collection;import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;//本类用于List接口的方法测试
public class TestList {public static void main(String[] args) {//1.创建List接口的多态对象List<String> list=new ArrayList<>();//2.向集合中添加元素list.add("大力娃");list.add("千顺娃");list.add("头铁娃");list.add("喷火娃");list.add("葫芦娃");list.add("隐身娃");list.add("小紫娃");System.out.println(list);//3.测试继承自Collection中的方法
//        list.clear();
//        System.out.println(list);System.out.println(list.contains("喷火娃"));System.out.println(list.isEmpty());System.out.println(list.remove("小紫娃"));System.out.println(list);System.out.println(list.size());System.out.println(Arrays.toString(list.toArray()));//4.测试集合间的操作List<String> list2=new ArrayList<>();list2.add("1");list2.add("2");list2.add("3");list2.add("4");System.out.println(list2);System.out.println(list.addAll(list2));System.out.println(list);System.out.println(list.containsAll(list2));System.out.println(list.removeAll(list2));System.out.println(list);//将list2集合中所有元素加到list集合的1号索引处System.out.println(list.addAll(1,list2));System.out.println(list);//5.List接口中独有的方法list.add("小蝴蝶");//追加到最后list.add(1,"蛇精");list.add(3,"小蝴蝶");System.out.println(list);System.out.println(list.indexOf("小蝴蝶"));System.out.println(list.lastIndexOf("小蝴蝶"));System.out.println(list.remove(5));//移除索引处的元素System.out.println(list);System.out.println(list.get(3));//得到索引处的元素System.out.println(list.set(6,"蝎子精"));//在指定索引处修改指定元素与add不同System.out.println(list);}
}

3.2集合迭代的4种方式

1)for循环--因为list集合是有序的,元素由下表,所以可以根据下标来遍历

//从哪开始0 到哪结束list.size()-1 如何变化for (int i = 0; i < list.size(); i++) {//根据本轮循环遍历到的索引值获取对应的集合元素System.out.println(list.get(i));}System.out.println("**********方式一***********");

2)高效/增强for循环/forreach循环

//格式:for(遍历的数组元素类型  元素名 : 要遍历的元素){循环体}for(String s:list){System.out.println(s);}System.out.println("**********方式二***********");

3)iterator

//方式三:是从父接口Collection中继承过来的迭代器//1.获取要遍历集合的迭代器Iterator<String> it = list.iterator();//2.通过刚刚获取到的迭代器循环迭代元素while(it.hasNext()){//判断集合是否有下一个元素可以迭代//3.打印当前循环到的元素System.out.println(it.next());}System.out.println("**********方式三***********");

4)listIterator

属于List接口特有的迭代器

/*方式四:ListIterator属于List接口特有的迭代器* Iterator<E>--父接口--hasNext()--next()* ListIterator<E>--子接口--除了父类功能以外* 还有自己特有的功能,比如逆序遍历,添加元素,但很少用*///1.获取迭代器ListIterator<String> it2 = list.listIterator();//2.迭代集合中的元素while(it2.hasNext()){//判断是否有下一个元素可迭代//3.打印迭代的元素System.out.println(it2.next());}System.out.println("**********方式四***********");

4.ArrayList

底层结构是数组的结构

package cn.tedu.collection;import java.util.ArrayList;
import java.util.Iterator;//本类用于测试ArrayList实现类
public class TestArrayList {public static void main(String[] args) {//1.创建对应的集合对象/*底层会自动帮我们创建数组来存放Integer类型的元素,且数组的初始容量为10*/ArrayList<Integer> list=new ArrayList<>();//2.向集合中添加测试数据list.add(100);list.add(200);list.add(300);list.add(400);list.add(400);list.add(300);System.out.println(list);
//        list.clear();
//        System.out.println(list);System.out.println(list.contains("100"));System.out.println(list.get(0));System.out.println(list.indexOf(400));System.out.println(list.lastIndexOf(400));System.out.println(list.remove(1));System.out.println(list);System.out.println(list.size());System.out.println(list.set(2,77));System.out.println(list);System.out.println(list.remove(Integer.valueOf(300)));System.out.println(list);Integer a1=1;int b=a1;Iterator<Integer> it = list.iterator();while(it.hasNext()){System.out.println(it.next());}}
}

5.LinkedList

底层为链表(一种结构),两端效率高,底层是链表实现的

特有方法:
addFirst()

addLast()

getFirst()

getLast()

查询系列:

peek() 查询集合中的首元素

peekFirst() 同上

element()同上

peekLast()

新增系列:

offer()

offerFirst()

offerLast()

移除系列:

poll()

pollFirst()

pollLast()

package cn.tedu.collection;import java.util.LinkedList;//本类用于测试List接口实现类LinkedList
public class TestLinkedList {public static void main(String[] args) {LinkedList<String> list =new LinkedList<>();list.add("孙悟空");list.add("猪八戒");list.add("唐三藏");list.add("沙师弟");list.add("白龙马");System.out.println(list);//自行测试方法//测试LinkedList特有的方法list.addFirst("奔波儿灞");list.addLast("霸波尔奔");System.out.println(list);System.out.println(list.getFirst());//获取首元素System.out.println(list.getLast());//获取尾元素System.out.println(list.removeFirst());System.out.println(list);System.out.println(list.removeLast());System.out.println(list);LinkedList<String > list2=new LinkedList<>();list2.add("水浒传");list2.add("西游记");list2.add("三国演义");list2.add("红楼梦");System.out.println(list2);/*别名:查询系列*/System.out.println(list2.peek());//查询集合中的首元素System.out.println(list2);System.out.println(list2.peekFirst());System.out.println(list2);System.out.println(list2.element());System.out.println(list2);System.out.println(list2.peekLast());///*别名:新增系列*/System.out.println(list2.offer("盗墓笔记"));//将指定元素添加至末尾System.out.println(list2);System.out.println(list2.offerFirst("天体"));System.out.println(list2.offerLast("汤姆叔叔的小屋"));System.out.println(list2);/*移除系列*/System.out.println(list2.poll());System.out.println(list2);System.out.println(list2.pollFirst());System.out.println(list2.pollLast());System.out.println(list2);}
}

6.Map接口

泛型有两个

Entry<K,V>--键值对--KEY与VALUE

键与值一一对应,可以根据KEY找到VALUE

注意:KEY不可以重复

1.Map<K,V>结构中的数据要符合映射规则,一定注意要同事指定K和V的数据类型 * 至于K,V具体什么类型,看业务

2.Map中存数据的方法为put(),注意要同时存入一对:K、V

3.map中的key不允许重复,如果重复,此key对应的value会被覆盖

4.map中的value可以重复

6.1常用方法

//3.进行方法测试
//        map.clear();
//        System.out.println(map);System.out.println(map.hashCode());System.out.println(map.equals("黑熊精"));System.out.println(map.isEmpty());System.out.println(map.size());//判断集合中键值对的个数System.out.println(map.containsKey(9527));//判断集合是否包含指定的键System.out.println(map.containsValue("黄毛怪"));//判断集合是否包含指定的值System.out.println(map.get(9530));//根据指定的key获取对应的valueSystem.out.println(map.remove(9529));//根据指定的key删除对应的键值对System.out.println(map);

6.2迭代

1)方式一:

遍历map中的数据,但map本身没有迭代器,所以需要先转换成set集合再迭代

Set<Key>:把map中所有的key取出来放入当前的set集合中

Set<Integer> keySet = map.keySet();Iterator<Integer> it = keySet.iterator();while(it.hasNext()){Integer key = it.next();String value= map.get(key);System.out.println("{"+key+"="+value+"}");}

方式二:

遍历map集合,需要先把map集合转为set集合

这个方案是把map中每一对键值对看做是一对对的Entry<K,V> 如果有五个键值对,那就有五个Entry<K,V>放入set集合中

注意:一对KV就是一对Entry<K,V>

Set<Map.Entry<Integer, String>> entries = map.entrySet();Iterator<Map.Entry<Integer, String>> it2 = entries.iterator();while(it2.hasNext()){Map.Entry<Integer, String> entry = it2.next();Integer key = entry.getKey();String value = entry.getValue();System.out.println("{"+key+"="+value+"}");}

CGB 2107 2021.8.18 笔记相关推荐

  1. ElasticSearch搜索引擎-2_学习笔记2021.4.18)

    ElasticSearch搜索引擎-2_学习笔记(2021.4.18) 前言: RESTful 介绍 , 我们通过RESTful来操作ElasticSearch (所有请求都是通过Postman ) ...

  2. 2021年 第12届 蓝桥杯 Java B组 省赛真题详解及小结【第1场省赛 2021.04.18】

    蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[题目下载.2013年(第4届)~2020年(第11届)] CSDN 蓝桥杯 专栏 2013年 第04届 蓝桥杯 Java B组 省赛真题详解及小结 ...

  3. 史元春老师组20-21年论文笔记

    Chen Liang, Chun Yu, Xiaoying Wei, Xuhai Xu, Yongquan Hu, Yuntao Wang, Yuanchun Shi: Auth+Track: Ena ...

  4. 2021李宏毅机器学习笔记--21 Anomaly Detection

    2021李宏毅机器学习笔记--21 Anomaly Detection(异常侦测) 摘要 一.问题描述 二.Anomaly异常 三.Anomaly Detection(异常侦测)做法 3.1 Bina ...

  5. 2021李宏毅机器学习笔记--12 attack ML models

    2021李宏毅机器学习笔记--12 attack ML models 摘要 一.图像模型的攻击 1.1原理 1.2Constraint 1.3参数训练 1.4一个例子 1.5攻击方法 1.5.1FGS ...

  6. 实战:怎样把间隔的几个commit整理成1个?-2021.11.18

    实战:怎样把间隔的几个commit整理成1个?-2021.11.18 目录 文章目录 实战:怎样把间隔的几个commit整理成1个?-2021.11.18 目录 文档来源 实验环境 实验软件(无) 1 ...

  7. 2021李宏毅机器学习笔记--22 Generative Adversarial Network 01

    @[TOC](2021李宏毅机器学习笔记–22 Generative Adversarial Network 01(GAN,生成式对抗网络)) 摘要 GAN是建立于神经网络的基础上的,其核心思想是&q ...

  8. 2021考研数学笔记

    有问题欢迎博客园留言,CSDN不太常看呀~ 2021.5.9 考研要加油嗨,尽管一切很累,但没达到目标前仍是继续努力. 分享:我的2021考研数学笔记

  9. 2021/11/18学习笔记:城市建成区的边界

    老师让我做城市建成区的边界 卒 这咋做啊... 这小半个月都在做这个了... 把思路整理一下,免得以后忘记了. 数据来源: 1.夜间灯光数据:Chen Zuoqi, Yu Bailang*, Yang ...

最新文章

  1. [Android Pro] ScrollView使用fillViewport设置高度为MatchParent
  2. 论面向组合子程序设计方法 之 重构2
  3. 动态规划 —— 背包问题 —— 背包问题模版
  4. 分析深圳电信的新型HTTP劫持方式
  5. java String对象转Base64
  6. 生成二维码并以图片格式下载-qrcodejs2
  7. Windows用户密码基础知识
  8. android4.4.2 以太网代理,Android2.3.4系统添加Ethernet框架支持
  9. NOI Linux 2.0 桌面背景展示
  10. 2022-07-17 第四小组 孙翰章 职业规划
  11. Ajax-GET请求
  12. asuswrt 单臂路由_OPENWRT-KOOLSHARE软路由,一级/单臂/二级/旁软路由设置单臂路由联网教程...
  13. 云e办学习笔记(十五)Redis学习以及相关部署
  14. 河大计算机学院足球队,“河大杯”我院足球队两连胜提前晋级淘汰赛
  15. 3374——数据结构实验之查找二:平衡二叉树
  16. 分享107个PHP源码,总有一款适合您
  17. Nature子刊:教你零基础开展微生物组数据分析和可视化
  18. R语言 提取数据中的任意子集
  19. 很好的源码软件列表,有助于学习提高
  20. Fatal message conversion error;message rejected;it will be dropped or routed to a dead letter exchan

热门文章

  1. ubuntu18.04企业微信乱码
  2. Adobe Premiere基础特效(卡点和转场)(四)
  3. 设计模式----装饰模式(JAVA)
  4. 懂车帝与蛋蛋订车两大平台对比
  5. 基于MS的氢键分析脚本介绍
  6. 三大流量站点你适合做哪个?
  7. Java语言概述以及环境搭建
  8. 【练习赛】2022年高教杯数学建模C题(第一题的第一小问)
  9. 2023年天津农学院专升本专业课报名缴费时间考试安排
  10. oracle12c密码登录失败,【译】解决Oracle12c Cloud Control登录验证出错问题