回顾

做个小案例,使用ArrayList存储自定义对象并遍历

import java.util.*;public class ArrayListDemo{public static void main(String[] args){//创建ArrayList对象ArratList arraylist = new ArrayList();//创建学生对象Student s1 = new Student("范闲", 23);Student s2 = new Student("范思辙", 22);Student s3 = new Student("鸡腿菇凉", 20);Student s4 = new Student("范若若", 21);Student s5 = new Student("庆帝", 50);//将学生对象添加到集合中arrayList.add(s1);arrayList.add(s2);arrayList.add(s3);arrayList.add(s4);arrayList.add(s5);//遍历方式1:迭代器遍历    //获取迭代器Iterator iterator = arrayList.iterator();while(iterator.hasNext){Student s = (Student)iterator.next();System.out.println(s.getName() + "---" + s.getAge());//使用getset方法遍历数组for(int i = 0;i < arraylist.size();i++){Student student = (Student)arrayList.get(i);System.out.println(student.getName() + "---" + student.getAge());                }}
}//这是student类import java.util.Objects;public class Student {private String name;private int age;public Student() {}public Student(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", age=" + age +'}'+"\n";}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Student student = (Student) o;return age == student.age &&Objects.equals(name, student.name);}
}

去除集合中字符串的重复值(字符串的相同内容)
方式一:创建一个新的集合

public class ArrayListTest1{public static void main(String[] args){//创建旧集合对象ArrayList list = new ArrayList();//向集合中添加字符串元素list.add("hello");list.add("world");list.add("java");list.add("hadoop");list.add("hive");list.add("hello");list.add("spark");list.add("java");System.out.println("去重之前的集合为:"+List);//创建一个新的集合去保存去重后的元素ArrayList list2 = new ArrayList();//遍历旧的集合Interator interator = list.iterator();while(iterator.hasNext){String s = (String)iterator.next();//获取到元素后,拿着这个元素去新的集合里面去找,如果找到说明重复//如果没有找到,就添加到新集合中if(!list2.contains(s)){list2.add[s]}}System.out.println("去重后的集合为:"+list2);}
}
public class ArrayListTest2 {public static void main(String[] args) {ArrayList list = new ArrayList();Student s1 = new Student("Kayleigh", 18);Student s2 = new Student("kayle", 19);Student s3 = new Student("kaylele", 20);Student s4 = new Student("Kayleigh", 18);Student s5 = new Student("kaylaigh", 19);list.add(s1);list.add(s2);list.add(s3);list.add(s4);list.add(s5);System.out.println(list);System.out.println("================================");ArrayList list2 = new ArrayList();Interator interator = list.interator();while(interator.hasNext){Student s = (Student).interator.next();if(!list2.comtains(s)){list2.add(s);}}System.out.println(list2);}
}

来看LinkedList

        LinkedList:底层数据结构为链表,查询慢,增删快线程不安全的,效率高LinkedList特有的功能:1、添加功能:void addFirst(Object obj) 在该列表开头插入指定的元素。void addLast(Object obj) 将指定的元素追加到此列表的末尾。等同于add()方法2、获取功能:Object getFirst() 返回此列表中的第一个元素。Object getLast() 返回此列表中的最后一个元素。3、删除功能:Object removeFirst() 从此列表中删除并返回第一个元素。Object removeLast() 从此列表中删除并返回最后一个元素。
public class LinkedListDemo1 {public static void main(String[] args) {//创建LinkedList集合对象LinkedList linkedList = new LinkedList();//添加元素到集合中linkedList.add("hello");linkedList.add("world");linkedList.add("java");linkedList.add("hadoop");linkedList.add("hive");linkedList.add("spark");System.out.println(linkedList);System.out.println("=======================================");//void addFirst(Object obj) 在该列表开头插入指定的元素。linkedList.addFirst("flink");System.out.println(linkedList);//void addLast(Object obj) 将指定的元素追加到此列表的末尾。linkedList.addLast("Hbase");System.out.println(linkedList);//Object getFirst() 返回此列表中的第一个元素。Object first = linkedList.getFirst();System.out.println(first);System.out.println(linkedList);//Object getLast() 返回此列表中的最后一个元素。Object last = linkedList.getLast();System.out.println(last);System.out.println(linkedList);//Object removeFirst() 从此列表中删除并返回第一个元素。Object o = linkedList.removeFirst();System.out.println(o);System.out.println(linkedList);//Object removeLast() 从此列表中删除并返回最后一个元素。Object o1 = linkedList.removeLast();System.out.println(o1);System.out.println(linkedList);}
}

请用LinkedList模拟栈数据结构的集合,并测试

栈的特点:先进后出题目的真正意思是,自己写一个类,底层是LinkedList,调用自己写的方法实现栈数据结构
public class LinkedListTest1{public static void main(String[] args){//创建集合LinkedList list = new LinkedList();//添加数据//linkedList.add("hello");
//        linkedList.add("world");
//        linkedList.add("java");linkedList.addFirst("hello");linkedList.addFirst("world");linkedList.addFirst("java");linkedList.addFirst("hadoop");//遍历Iterator it = list.iterator();while(it.hasNext()){Object next = iterator.next();System.out.println(next);}}
}//如果面试的时候,你按照上面的写法 0分
    需求:现在有一个集合,集合中有些字符串的元素,我想判断一下里面有没有"bigdata"这个字符串如果有,我们就添加一个"yes"ConcurrentModificationException:并发修改异常当不允许这样的修改时,可以通过检测到对象的并发修改的方法来抛出此异常。原因:迭代器是依赖于集合存在的,在遍历遍历迭代器元素的时候,当我们判断成功后,,往集合中添加了一个元素,但是呢,迭代器这个时候并不知道已经添加了元素,所以就报错了。简单描述为:在迭代器遍历的时候,不能通过集合去修改元素。解决办法:1、迭代器遍历,迭代器修改2、集合遍历,集合修改
public class ListQuestion {public static void main(String[] args) {//创建一个集合对象List list = new ArrayList();list.add("hello");list.add("world");list.add("java");list.add("bigdata");list.add("hadoop");//获取迭代器对象
//        Iterator iterator = list.iterator();//        while (iterator.hasNext()){//            String s = (String) iterator.next();
//            if("bigdata".equals(s)){//                list.add("yes");
//            }
//        }//迭代器遍历,迭代器修改
//        ListIterator listIterator = list.listIterator();
//        while (listIterator.hasNext()){//            String s = (String) listIterator.next();
//            if("bigdata".equals(s)){//                listIterator.add("yes"); //在迭代器元素"bigdata"后面添加
//            }
//        }//集合遍历,集合修改for(int i=0;i<list.size();i++){String s = (String) list.get(i);if("bigdata".equals(s)){list.add("yes"); //在集合尾部添加}}System.out.println(list);}
}
    Vector:底层数据结构是数组,查询快,增删慢线程安全的,效率低(虽然是线程安全的,以后我们也不使用它,后面会说一个线程安全的类替代它)Vector特有的方法:public void addElement(Object obj)将元素添加到集合的末尾 效果和add()一样public Object elementAt(int index)返回指定索引处的组件   get(int index)public Enumeration elements()返回此向量的组件的枚举
public class VectorDemo1 {public static void main(String[] args) {//创建Vector集合对象Vector vector = new Vector();//向集合中添加元素vector.addElement("hello");vector.add("world");vector.addElement("java");//public Object elementAt(int index)Object o = vector.elementAt(0);System.out.println(o);System.out.println(vector.elementAt(1));System.out.println(vector.elementAt(2));
//        System.out.println(vector.elementAt(3));//        System.out.println(vector.get(0));//public Enumeration elements()Enumeration elements = vector.elements();while (elements.hasMoreElements()){Object o1 = elements.nextElement();System.out.println(o1);}System.out.println("=====================================");System.out.println(vector);}
}

Java进阶之--------集合2相关推荐

  1. Java进阶之--------集合

    集合 集合和数组很类似,都是一种容器,但是为什么我们学了数组还要学习集合呢?其实还是有很大差距的,我们先看一下数组和集合的不同点 区别: 集合和数组的不同点:1.数组的长度是不可变的,集合是可以改变2 ...

  2. Java 进阶:集合框架2

    目录 一.List 接口 概述 List 接口中的抽象方法(特有) List 遍历 二.ListIterator 接口 1.概述 ListIterator 接口的抽象方法 List 逆向遍历: 三.迭 ...

  3. Java 自学路线图之 Java 进阶自学

    文章目录 Java 自学路线图的第二阶段是 Java 语言进阶自学,在自学了第一阶段的 Java 基础自学后,大家对 Java 语言编程有了初步的了解和认识,建议在第一部分自学后整理一下自己的自学思路 ...

  4. JAVA进阶教学之(集合)

    目录 1.集合概述 2.集合存储的数据类型 3.不同的集合,底层都会对应不同的数据结构 4.集合继承结构图(部分接口和类) 5.Collection接口中常用的方法 6.Collection 集合迭代 ...

  5. Java进阶,Set集合,Map集合

    Java进阶,Set集合,Map集合 一.Set系列集合 1.Set系列集系概述 Set系列集合特点 无序:存取顺序不一致 不重复:可以去除重复 无索引:没有带索引的方法,所以不能使用普通for循环遍 ...

  6. 超仪电子 java面试_全靠这份阿里大佬的“Java进阶面试手册”助我收获蚂蚁金服offer!...

    都2021年了,你的工资涨了吗? 对于即将到来的金三银四跳槽涨薪季,我想很多小伙伴都已经摩拳擦掌了吧!当然,我猜也有很多小伙伴是下图的状态吧!毕竟面试一年比一年难[落泪] 不得不说现在面试确实很难,现 ...

  7. Java进阶3. 内存回收机制

    Java进阶3. 内存回收机制 20131029 前言: 学过C++的都知道,C++中内存需要程序员自己维护.说道这里,很多开发的同学就感觉很痛苦,当他转向Java的时候,就会说你看Java多好啊,程 ...

  8. Java进阶_3 注解、APT

    Java进阶_3 注解.APT 一.注解的概念 注解(Annotation) ​ 也叫元数据.一种代码级别的说明.它是JDK1.5及以后版本引入的一个特性,与类.接口.枚举是在同一个层次.它可以声明在 ...

  9. Java基础到Java进阶——Java小白的历练之路------从0到1,开卷!

    Java小白的历练之路------从0到1 title: Java Essay date: 2022-09-07 08:58:32 tags: Java notes 写在前面: 免责声明:本笔记来源自 ...

最新文章

  1. html怎么设置取当前日期格式,js获取当前日期,格式为YYYY-MM-DD
  2. 现在的桥都会做仰卧起坐了!中国首座3D打印桥亮相上海
  3. AC日记——阶乘和 openjudge 1.6 15
  4. easypoi导出数值型_解决EasyPoi导出Excel金额数值类型
  5. linux修改文件打开最大数(ulimit命令)
  6. 用极大化思想解决最大子矩形问题
  7. 学Python就能做好数据分析?万能语言背后是一片韭菜地
  8. 求解简单的四则运算表达式
  9. jdbc批量执行SQL insert 操作
  10. win下使用curl
  11. Poi 为word 添加页眉 获取页眉
  12. 【数据科学】肯德尔等级相关系数( Kendall's tau coefficient )
  13. 计算机网络课程设计组建大型网吧局域网,计算机网络课程设计组建网吧局域网...
  14. python算库存管理_年终库存盘点怎么做?无代码库存管理系统高效率!
  15. 微信智能排号系统,哈林电子会员卡软件 微信智能排队系统 微排队系统源码
  16. 机器学习 入门详细解析(二)决策树、随机森林
  17. 有字符串“aabbcdbaaabc”用你熟悉的语言实现去除“ab”子串(正则方法)
  18. 聚类 k-means、yellowbrick和信用卡用户实例 -- 023
  19. 人脸识别 无法打开相机 笔记本_笔记本上的人脸识别怎么用?需要安装驱动吗?...
  20. 中文编程软件 - 习语言安装与使用入门

热门文章

  1. 如何防止CDN防护被绕过
  2. 2018北大暑校acm算法训练课程 海贼王之伟大航路 状压dp
  3. AE导出JSON数据用CSS做前端交互---kalrry
  4. ensp-网络地址转换
  5. jsp/servlet过滤器和struts2拦截器的有什么区别
  6. java抽象类变量_Java抽象类
  7. Kubernetes高可用集群搭建
  8. 计算机网络安全技术复习知识点总结
  9. 对网页游戏《卧龙吟》的分析3-----预登陆flash的源代码分析
  10. 计算机管理windows无法访问指定设备,windows无法访问指定设备路径或文件如何解决...