集合相关练习-Java基础学习总结

7月16日学习内容练习

目标练习:
ArrayList删除重复元素,集合与数组相互转变 , 集合嵌套练习,使用LinkedList集合实现栈结构

  1. ArrayList删除重复元素,集合与数组相互转变
ArrayList <Integer>list = new ArrayList();
       list.add(1001);
       list.add(1002);
       list.add(1003);
       list.add(1004);
       list.add(1005);
       list.add(1006);
       list.add(1007);
       list.add(1003);
       list.add(1004);
       list.add(1005);
       list.add(1006);
       //删除重复元素方法一:
       for (int i = 0; i < list.size(); i++) {
           Integer o = list.get(i);
           if(list.indexOf(o)!=list.lastIndexOf(o)){ //若元素第一次出现位置与最后一次出现位置不一致时,则删除此元素
               list.remove(o);
           }
       }
      // 删除重复元素方法二:
       for (int i = 0; i < list.size(); i++) {
           for (int j = 0; j < list.size(); j++) {
               Integer o = list.get(i);
               Integer o2 = list.get(j);
               if(o.equals(o2)){ //将list两次遍历,获得第i,j位的元素,若相等判断其位置是否一样,不一样则删除;
                  if(i!=j)
                  {list.remove(j);
                  }
               }
           }
       }
       System.out.println(list);
       //将集合转变为数组
       Integer[] iteger = new Integer [list.size()];
       list.toArray(iteger);
       for (Integer integer : iteger) {
           System.out.println(integer);
       }
       //将数组变为集合
       Integer[] iteger2= {20,30,40,20,25};
       int[] iteger1= {20,30,40,20,25};
       String[] str = {"张三","张三","张三","张三"};
       List<Integer> integers = Arrays.asList(iteger2);
       List<int[]> ints = Arrays.asList(iteger1);
       List<Integer[]> integers1 = Arrays.asList(iteger2, iteger2, iteger2);
       List<String> strings = Arrays.asList(str);
       List<String[]> strings1 = Arrays.asList(str, str, str);

从上面代码可以看出数组转集合时调用Arrays.asList(T…a)方法的参数,为可变参数,并且参数类型灵活;
其次当我传入一个引用类型的数组时,直接存入;但是当我们存入多个引用类型的数组,或基本类型数组时,会转化为相应类型数组存入;

  1. 集合嵌套练习
  ArrayList<Student> students = new ArrayList<>();
        students.add(new Student<String, Integer>("张三", 17));
        students.add(new Student<String,Integer>("张三l",17));
        ArrayList<Student> students1 = new ArrayList<>();
        students1.add(new Student<String,Integer>("张三2",17));
        students1.add(new Student<String,Integer>("张三3",17));
        ArrayList<Student> students2 = new ArrayList<>();
        students2.add(new Student<String,Integer>("张三4",17));
        students2.add(new Student<String,Integer>("张三5",17));
        ArrayList<ArrayList<Student>> stu = new ArrayList<>();
        stu.add(students);
        stu.add(students1);
        stu.add(students2);
        for (ArrayList<Student> list : stu) {
            for (Student student : list) {
                System.out.println(student.getName()+"==="+student.getAge());
            }
        }
  1. LinkedList集合实现栈结构
 LinkedList list;
   public test(){
       list = new <Integer>LinkedList();
   }

   public static void main(String[] args) {
       test t = new test();
       t.addele(1);
       t.addele(2);
       t.addele(3);
       Integer i = t.getele();
       System.out.println(i);
   }
   private void addele(Integer a) {
       list.addFirst(a);  //将元素添加至首位,实现栈先进的在底部
   }

   private Integer getele() {
       Integer pop = (Integer) list.pop();  //取出列表元素第一个元素后并删除
       list.addLast(pop);
       return pop;
   }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值