博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
集合框架2
阅读量:6619 次
发布时间:2019-06-25

本文共 4119 字,大约阅读时间需要 13 分钟。

1、ArrayList去除重复字符串

   
  思路:创建一个新的集合,然后将旧集合的内容遍历放入新集合,如果新集合里不存在该元素就放入,存在就不要了
  1. publicstaticvoid main (String[] args){
  2. ArrayList list=newArrayList();
  3. list.add("a");
  4. list.add("a");
  5. list.add("b");
  6. list.add("b");
  7. list.add("c");
  8. list.add("d");
  9. ArrayList newList=getSingle(list);
  10. System.out.println(newList);
  11. }
  12. /**
  13. * 创建新集合将重复元素去掉
  14. * 1、明确返回值类型,返回ArrayList
  15. * 2、明确参数列表ArrayList
  16. */
  17. publicstaticArrayList getSingle(ArrayList list){
  18. ArrayList newList =newArrayList();
  19. Iterator it = list.iterator();
  20. while(it.hasNext()){
  21. Object obj = it.next();
  22. if(!newList.contains(obj)){
  23. newList.add(obj);
  24. }
  25. }
  26. return newList;
  27. }
  28. }
 
2、ArrayList去除重复的自定义对象
contains依赖于equals方法,所以需要在person类中重写equals方法
  
 
   
注意:remove方法的底层同样依赖于equals方法:
 
3、LinkedList特有功能
 
4、栈和队列
    栈:先进后出
           
 
    队列:先进先出
          
 
5、LinkedList模拟栈数据结构的集合并测试
  
  1. publicclassStack{
  2. privateLinkedList list =newLinkedList();
  3. // 模拟进栈方法
  4. publicvoid in(Object obj){
  5. list.addLast(obj);
  6. }
  7. // 模拟出栈方法
  8. publicObject out(){
  9. return list.removeLast();
  10. }
  11. // 模拟栈结构是否为空
  12. publicboolean isEmpty(){
  13. return list.isEmpty();
  14. }
  15. }
  1. publicstaticvoid main(String[] args){
  2. //demo1();
  3. Stack s=newStack();
  4. s.in("a");
  5. s.in("b");
  6. s.in("c");
  7. s.in("d");
  8. while(!s.isEmpty()){
  9. System.out.println(s.out());
  10. }
  11. }
 
6、泛型概述和基本使用
 
 <>标识了集合只能存储某该类引用数据或者该类的子类型,所有对象都继承object,泛型不定义为object,无意义
 
 类型转换异常:将类型转换成非该类型实例时出现类型转换异常:运行期错误
 
 注意:it.next()只能调用一次,如果多次会让指针向后移动多次
 
泛型注意事项:
 
7、泛型的由来
 种瓜得瓜种豆得豆
 
8、泛型类的概述及其使用
 
 
9、泛型方法的概述和使用
     非静态方法:方法泛型需要与类的泛型一致;如果不一致,需要在方法上声明该泛型:
 
 
      静态方法:必须声明自己的泛型,因为静态方法是随着类的加载而加载的,非静态方法是在创建对象的时候赋值
 
10、泛型接口的使用
两种方法:推荐用第一种
       
 
 
11、泛型高级之通配符
 
 
 
12、增强for循环的概述和使用
底层依赖的是迭代器iterator
 
 
 
13、三种迭代的能否删除
 
  1. publicstaticvoid main(String[] args){
  2. // TODO Auto-generated method stub
  3. ArrayList<String> list=newArrayList<>();
  4. list.add("a");
  5. list.add("b");
  6. list.add("b");
  7. list.add("c");
  8. list.add("d");
  9. //1、普通for循环版删除
  10. for(int i=0;i<list.size();i++){
  11. if("b".equals(list.get(i))){
  12. list.remove(i--);
  13. }
  14. }
  15. System.out.println(list);
  16. }
  1. //2、迭代器删除
  2. Iterator<String> it=list.iterator();
  3. while(it.hasNext()){
  4. if("b".equals(it.next())){
  5. //list.remove("b");不能用集合的删除方法,迭代过程中如果修改会出现【并发修改异常】
  6. it.remove();
  7. }
  8. }
  9. System.out.println(list);
  10. }
  1. //3、增强for循环,不能删除,只能遍历,因为底层由迭代器实现的
  2. for(String string:list){
  3. if("b".equals(string)){
  4. list.remove("b");
  5. }
  6. }
  7. System.out.println(list);
  8. }
 
14、静态导入的概述和使用
 静态导入后,Arrays.sort的前缀可以省略不写直接写sort
 
15、可变参数的概述和使用
 
  1. publicclassChangeableArgs_Demo2{
  2. publicstaticvoid main(String[] args){
  3. // TODO Auto-generated method stub
  4. int[] arr={
    11,22,33,44,55};
  5. //print(arr);
  6. print(11,22,33);
  7. }
  8. // public static void print(int[] arr){
  9. // for(int i=0;i<arr.length;i++){
  10. // System.out.println(arr[i]);
  11. // }
  12. // }
  13. publicstaticvoid print(int...arr){
    //可变参数是一个数组
  14. for(int i=0;i<arr.length;i++){
  15. System.out.println(arr[i]);
  16. }
  17. }
  18. }
 
16、Arrays工具类的aslist方法的使用
  1. publicstaticvoid main(String[] args){
  2. //demo1();
  3. //demo2();
  4. //集合转数组,加泛型的
  5. ArrayList<String> list=newArrayList<>();
  6. list.add("a");
  7. list.add("b");
  8. list.add("c");
  9. list.add("d");
  10. list.add("e");
  11. String[] arr = list.toArray(newString[6]);//当集合转换数组时,数组的长度如果是<=集合的size值,转换后的数组长度等于集合
  12. //如果数组的长度>集合的size值,那分配的数组长度就和指定的长度相同
  13. for(int i=0;i<arr.length;i++){
  14. System.out.println(arr[i]);
  15. }
  16. }
  17. publicstaticvoid demo2(){
  18. // int[] arr={11,22,33,44,55}; 基本数据类型的数组转换成集合,会将整个数组当做一个对象进行转换
  19. // List<int[]> list=Arrays.asList(arr);
  20. // System.out.println(list);
  21. Integer[] arr={
    11,22,33};//想将数组转换成集合,数组必须是引用数据类型
  22. List<Integer> list=Arrays.asList(arr);
  23. System.out.println(list);
  24. }
  25. publicstaticvoid demo1(){
  26. String[] arr={
    "a","b","c"};
  27. List<String> list=Arrays.asList(arr);//将数组转换成集合
  28. //list.add("d"); 不能添加
  29. System.out.println(list);
  30. }
 
17、ArrayList嵌套
  1. publicclassArrayListArrayList_demo1{
  2. /**
  3. * 集合嵌套
  4. * 学科分为若干个班级
  5. * 整个学科是一个大集合
  6. * 若干个班级分为每一个小集合
  7. * @param args
  8. */
  9. publicstaticvoid main(String[] args){
  10. ArrayList<ArrayList<Person>> list=newArrayList<>();
  11. ArrayList<Person> first =newArrayList<>();
  12. first.add(newPerson("张三",23));
  13. first.add(newPerson("李四",24));
  14. first.add(newPerson("王五",25));
  15. ArrayList<Person> second =newArrayList<>();
  16. second.add(newPerson("大黄",3));
  17. second.add(newPerson("豆豆",4));
  18. second.add(newPerson("小呆",5));
  19. //将班级添加到学科集合中
  20. list.add(first);
  21. list.add(second);
  22. //遍历学科集合
  23. for(ArrayList<Person>a : list){
  24. for(Person p:a){
  25. System.out.println(p);
  26. }
  27. }
  28. }
  29. }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

转载于:https://www.cnblogs.com/mairanran/p/6840251.html

你可能感兴趣的文章
[转载]html中DTD使用小结
查看>>
经典排序算法 - 冒泡排序Bubble sort
查看>>
mysql的查询、子查询及连接查询
查看>>
mysql 命令导入导出数据
查看>>
Ubuntu系统(二)-启用root账号
查看>>
mysql开启远程访问的方法
查看>>
nginx accept() failed (24: Too many open files)
查看>>
安装Ntop监控网络软件
查看>>
Exchange Server 2013 DAG高可用部署(二)-网络及先决条件准备
查看>>
我的友情链接
查看>>
以SYSTEM用户运行CMD
查看>>
企业Windows域环境中的组策略应用案例二
查看>>
shell编程基础总结
查看>>
图解Git
查看>>
禁止指定IP连接SQLSERVER
查看>>
性能测试技能树
查看>>
曙光云计算合作伙伴招募 VMware、永中软件等已加入
查看>>
Cocos网络篇[3.2](3) ——Socket连接(1)
查看>>
cocos2dx[3.4](25)——瓦片地图TiledMap
查看>>
linux运维笔记-linux文件系统
查看>>