zoukankan      html  css  js  c++  java
  • Java ——集合框架 list lambda set map 遍历方法 数据结构

    本节重点思维导图

    集合框架

     

    有序无序:元素放入的顺序与取出的顺序是否一致,一致即为有序,不一致即无序。

    • List:允许重复、有序
    • ArrayList:长度可变的数组,遍历速度快
    • LinkedList:链表:添加删除节点速度快
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.List;
    
    public class Demo {
        public static void main(String[] args) {
            List list = new ArrayList();
            System.out.println("--------"+list.toString());//add
            list.add("aa");
            list.add(1234);
            list.add(true);
            list.add(new Date());
            list.add(1234);
            list.add(3.14);
    
            System.out.println(list.get(0) + "   --     " + list.get(3));
            System.out.println(list.size());
    
            System.out.println(list);
            System.out.println(list.toString());
    
            for (Object obj : list) {
                System.out.println(obj);
            }
    
            list.remove(0);// 根据下标移除
    
            list.clear();
            System.out.println(list.size());
        }
    
    }

    结果:

    --------[]
    aa   --     Fri May 31 15:07:45 CST 2019
    6
    [aa, 1234, true, Fri May 31 15:07:45 CST 2019, 1234, 3.14]
    [aa, 1234, true, Fri May 31 15:07:45 CST 2019, 1234, 3.14]
    aa
    1234
    true
    Fri May 31 15:07:45 CST 2019
    1234
    3.14
    0

     泛型

    import java.util.ArrayList;
    import java.util.Date;
    import java.util.Iterator;
    import java.util.List;
    
    public class Demo {
        public static void main(String[] args) {
                            List<String> list = new ArrayList<>();  
                            list.add("1234");  
                            list.add("true");  
                            list.add("aaaa");  
                            list.add("aaaa");  
                            list.add("bbbb");  
                            list.add("dddd");  
                      
                            String e3 = list.get(3);  
                            System.out.println(e3);  
                            System.out.println(list.get(3));
                            int size = list.size();  
                            System.out.println(size);  
                      
                            for (String item : list) {  
                                System.out.println(item);  
                            }  
                      
                            System.out.println("--------------------------");  
                            // Iterator迭代器  
                            Iterator<String> iterator = list.iterator();  
                            while (iterator.hasNext()) {// 判断是否还有下一个元素,有的话返回true  
                                String next = iterator.next();// 取出元素,同时将指针指向当前位置  
                                System.out.println(next);  
                            }  
                        }
    } 

    结果:

    aaaa
    aaaa
    6
    1234
    true
    aaaa
    aaaa
    bbbb
    dddd
    --------------------------
    1234
    true
    aaaa
    aaaa
    bbbb
    dddd

    listLambdasetmap

     *lambda

    public static void main(String[] args) {
            List<String> list = new ArrayList<>();
            list.add("zhangsan");
            list.add("lisi");
            list.add("zhangsan");
            list.add("wanger");
            list.add("mazi");
            list.add("wanger");
    
            list.stream().forEach(element->System.out.println(element));
            System.out.println();
            list.forEach(item -> System.out.println(item));
            System.out.println();
            list.forEach(System.out::println);
            
            //将List中所有的元素变成大写字母后再逆序输出
            System.out.println();
            for(int i =list.size()-1;i>=0;i--) {
                String item = list.get(i);
                item = item.toUpperCase();
                System.out.println(item);
            }
            System.out.println();
            list.stream().map(item->item.toUpperCase())//映射:依次拿出List中的每一个元素进行映射
                .forEach(System.out::println);
            
            //输出List中每一个元素的前两个字符
            System.out.println();
            list.stream().map(item->item.substring(0, 2))
                .forEach(System.out::println);
            
            //只输出List中长度大于4的元素
            System.out.println();
            list.stream().filter(item->item.length()>4)
                .forEach(System.out::println);
            
            //去除重复
            System.out.println();
            list.stream().distinct().forEach(System.out::println);
            
            //将Stream转换成List
            System.out.println();
            List<String> collect = list.stream().collect(Collectors.toList());
            System.out.println(collect);
        }

    *set

    public static void main(String[] args) {
            Set<String> set  = new HashSet<>();
            set.add("zhangsan");
            set.add("lis");
            set.add("zhangsan");
            set.add("wanger");
            set.add("mazi");
            set.add("wanger");
            
            for(String item : set) {
                System.out.println(item);
            }
            
            System.out.println();
            Iterator<String> iterator = set.iterator();
            while(iterator.hasNext()) {
                System.out.println(iterator.next());
            }
            
            System.out.println();
            set.forEach(System.out::println);
        }

    示例:学习set判断元素是否相等

    public class Dept {
        private int deptno;
        private String dname;
        private String loc;
    
        public Dept() {
            super();
        }
    
        public Dept(int deptno, String dname, String loc) {
            super();
            this.deptno = deptno;
            this.dname = dname;
            this.loc = loc;
        }
    
        public int getDeptno() {
            return deptno;
        }
        public void setDeptno(int deptno) {
            this.deptno = deptno;
        }
    
        public String getDname() {
            return dname;
        }
    
        public void setDname(String dname) {
            this.dname = dname;
        }
    
        public String getLoc() {
            return loc;
        }
    
        public void setLoc(String loc) {
            this.loc = loc;
        }
    
        @Override
        public int hashCode() {
            return 234;
        }
    
        @Override
        public boolean equals(Object obj) {
            return true;
        }
    
        @Override
        public String toString() {
            return "Dept [deptno=" + deptno + ", dname=" + dname + ", loc=" + loc + "]";
        }
    }
    
    
        public static void main(String[] args) {
            Set<Dept> set = new HashSet<>();
        
            set.add(new Dept());
            set.add(new Dept());
            set.add(new Dept(10,"sales","new york"));
            set.add(new Dept(20,"research","chicago"));
            
            System.out.println(set.size());
            
            set.forEach(System.out::println);
        }

    *map

    键值对

    public static void main(String[] args) {
            Map<String, Integer> data = new HashMap<>();
            data.put("a", 1);
            data.put("b", 2);
            data.put("c", 3);
            data.put("d", 4);
            
            System.out.println(data.get("a"));
            
            Set<String> keySet = data.keySet();
            keySet.forEach(System.out::println);
            
            Collection<Integer> values = data.values();
            values.forEach(item->System.out.print(item+" "));
            
            System.out.println();
            Set<Entry<String, Integer>> entrySet = data.entrySet();
            for(Entry<String, Integer> item: entrySet) {
                System.out.println(item.getKey()+" "+item.getValue());
            }
            
            
            data.forEach((k,v)->System.out.println(k+" : "+v));;
        }



     

    遍历方法

    快捷键:

    代码格式化:ctrl+sfhit+f

    自动提示:alt+?

    抽取变量:alt+shift+L

     复习总结

     Arrays

    public static void main(String[] args) {
            String[] data = { "zhangsan", "lisi", "wanger", "mazi","qianwu","zhaoliu" };
            List<String> asList = Arrays.asList(data);
            System.out.println(asList);
    
            System.out.println(data);
            System.out.println(Arrays.toString(data));
    
            int binarySearch = Arrays.binarySearch(data, "lisi");
            System.out.println(binarySearch);
    
            //对数组进行扩容
            String[] copyOf = Arrays.copyOf(data, data.length + 4);
            for (String item : copyOf)
                System.out.println(item);
            
            String[] copyOfRange = Arrays.copyOfRange(data, 2, 4); 
            System.out.println(Arrays.toString(copyOfRange));
            
            String[] copyOf2 = Arrays.copyOf(data, data.length);
            boolean equals = Arrays.equals(data,copyOf2);//比较两个数组的内容是否相等
            System.out.println(equals);
            
            
            boolean[] bol = new boolean[8];
            System.out.println(Arrays.toString(bol));
            Arrays.fill(bol,true);
            System.out.println(Arrays.toString(bol));
            
            Arrays.sort(data);
            System.out.println(Arrays.toString(data));
            
            System.out.println("--------------------");
            //匿名内部类
            Comparator<String> c = new Comparator<String>() {
                @Override
                public int compare(String o1, String o2) {
                    return o2.length()-o1.length();
                }
            };
            
            Arrays.sort(data,c);
            System.out.println(Arrays.toString(data));
            
            data = new String[]{ "zhangsan", "lisi", "wanger", "mazi","qianwu","zhaoliu" };
            Arrays.sort(data,(o1,o2)->o2.length()-o1.length());
            System.out.println(Arrays.toString(data));
        }

    collections

    public static void main(String[] args) {
            List<String> list = new ArrayList<>();
            
            Collections.addAll(list,"zhangsan", "lisi","zhangsan","wanger","zhangsan","mazi");
            System.out.println(list);
            
            int binarySearch = Collections.binarySearch(list, "lisi3");
            System.out.println(binarySearch);
            
            int binarySearch2 = Collections.binarySearch(list, "wanger", (o1,o2)->o1.length()-o2.length());
            System.out.println(binarySearch2);
            
            Collections.sort(list, new Comparator<String>() {
                @Override
                public int compare(String o1, String o2) {
                    return o1.length()-o2.length();
                }
            });
            System.out.println(list);
            
            Collections.shuffle(list);
            System.out.println(list);
            
            Collections.sort(list, (o1,o2)->o1.length()-o2.length());;
            System.out.println(list);
            
            Collections.replaceAll(list, "zhangsan", "***");
            System.out.println(list);
            
            Collections.swap(list, 1, 3);
            System.out.println(list);
            
            Collections.reverse(list);
            System.out.println(list);
        }

    list

    public static void main(String[] args) {
            List<String> list = new ArrayList<>();
            Collections.addAll(list,"zhangsan", "lisi","wanger","mazi");
            
            for(int i =0;i<list.size();i++){
                System.out.println(list.get(i));
            }
            
            for(String item : list){
                System.out.println(item);
            }
            
            Iterator<String> iterator = list.iterator();
            while(iterator.hasNext()){
                System.out.println(iterator.next());
            }
            
            ListIterator<String> listIterator = list.listIterator();
            while(listIterator.hasNext()){
                System.out.println(listIterator.next());
            }
            
            list.forEach(item->System.out.println(item));
            
            list.forEach(System.out::println);
        }

    set

    public static void main(String[] args) {
            Set<String> set = new HashSet<>();
            set.add("aa");
            set.add("bb");
            set.add("cc");
            set.add("dd");
    
            for(String item : set){
                System.out.println(item);
            }
            
            Iterator<String> iterator = set.iterator();
            while(iterator.hasNext()){
                System.out.println(iterator.next());
            }
            
            set.forEach(item->System.out.println(item));
            
            set.forEach(System.out::println);
        }

    map

    原则:将map变为set

    public static void main(String[] args) {
            Map<Integer,Goods> map = new HashMap<>();
            map.put(111, new Goods(111,"aaa",1,"aaaaaaaaaaa"));
            map.put(222, new Goods(222,"bbb",2,"bbbbbbbbbbbbb"));
            map.put(333, new Goods(333,"ccc",3,"ccccccccccccc"));
            map.put(444, new Goods(444,"ddd",4,"dddddddddddd"));
            
            Set<Integer> keySet = map.keySet();
            for(Integer key : keySet){
                System.out.println(key+" : "+map.get(key));
            }
            
            Set<Entry<Integer, Goods>> entrySet = map.entrySet();
            for(Entry<Integer, Goods> item : entrySet){
                System.out.println(item.getKey()+" "+item.getValue());
            }
            
            map.forEach((k,v)->System.out.println(k+" :: "+v));;
        }

    扩展:

    public static void main(String[] args) {
            List<String> list = Arrays.asList("zhangsan","lisi","wanger","mazi");
            
            Collections.sort(list, new Comparator<String>() {
                @Override
                public int compare(String o1, String o2) {
                    return o1.length() - o2.length();
                }
            });
            
            System.out.println(list);
            
            System.out.println("-------------");
            list.forEach(item->System.out.println(item+" "+item.hashCode()));
            
            list.sort((o1,o2)->{
                return o1.hashCode()- o2.hashCode();
            });
            list.forEach(System.out::println);
        }
  • 相关阅读:
    深度学习 Deep Learning UFLDL 最新Tutorial 学习笔记 3:Vectorization
    关于gcc的一点小人性化提示
    python 命令行參数解析
    一起talk C栗子吧(第九回:C语言实例--最大公约数)
    小程序 通用请求
    小程序 上啦下拉刷新window配置
    微信小程序 功能函数 将对象的键添加到数组 (函数深入)
    微信小程序 功能函数 点击传参和页面
    微信小程序 功能函数 购物车商品删除
    微信 小程序组件 分页菜单带下划线焦点切换
  • 原文地址:https://www.cnblogs.com/expedition/p/10955318.html
Copyright © 2011-2022 走看看