zoukankan      html  css  js  c++  java
  • 关于JAVA学习_集合

    集合:
    * 1.存储多个对象,数组、集合
    * 2.数组存储对象特点:Student[] stu=new Student[10];
    *       一旦创建长度不可变
    * 3.集合两大体系:collection和map
    * collection接口
    *           --list
    *           有序的,可重复的
    *                 ArraryList:底层就是数组 查询速度快,主要实现类
    *                 LinkedList:增删改速度快
    *         --set接口
    *            无序的,不可重复的
    *             HashSet

    collection代码案例:

     1 package list;
     2 
     3 import java.util.ArrayList;
     4 import java.util.Collection;
     5 import java.util.Date;
     6 import java.util.Iterator;
     7 
     8 import org.junit.Test;
     9 
    10 /**
    11  * 集合:
    12  * 1.存储多个对象,数组、集合
    13  * 2.数组存储对象特点:Student[] stu=new Student[10];
    14  *    一旦创建长度不可变
    15  * 3.集合两大体系:collection和map
    16  *       collection接口
    17  *          --list
    18  *              有序的,可重复的
    19  *              ArraryList:底层就是数组 查询速度快,主要实现类
    20  *              LinkedList:增删改速度快
    21  *          --set接口
    22  *              无序的,不可重复的
    23  *              HashSet
    24  * 
    25  *
    26  */
    27 public class TestCollection {
    28         @Test
    29         public void test(){
    30             Collection coll=new ArrayList();
    31             //1.size();获取集合元素个数
    32             System.out.println(coll.size());
    33             //add(object obj):添加一个对象
    34             coll.add(1);
    35             coll.add(17.0);
    36             coll.add("哈哈");
    37             coll.add(new Date());
    38             coll.add("哈哈");
    39             System.out.println(coll.size());
    40             //3.addAll(collection c):把集合元素从一个添加到另一个
    41             //4.isEmpty(): 判断一个集合是否为空,空返回true
    42             System.out.println(coll.isEmpty());
    43             //5.clear();清除集合中的元素
    44             //System.out.println(coll.isEmpty());
    45             //6.remove(object o):删除集合中的元素
    46             //coll.remove(1);
    47             System.out.println(coll.remove(1));
    48             //7.removeAll(collection c):从当前集合中删除另一集合中所有元素
    49             //8.contains(object o):判断当前集合是否包含集合o
    50             //9.toArray():把集合转成一个数组
    51             Object [] obs=coll.toArray();
    52             for(Object obj:obs){
    53                 System.out.println(obj);
    54             }
    55             
    56         }
    57         
    58         @Test
    59         public void test1(){
    60             Collection coll = new ArrayList();
    61             coll.add("韩信");
    62             coll.add("赵云");
    63             coll.add("李白");
    64             coll.add("玄策");
    65             
    66             //遍历
    67             //迭代 返回一个iterator接口
    68             Iterator i=coll.iterator();
    69             while(i.hasNext()){  //判断当前元素下面有没有下一个元素
    70                 System.out.println(i.next());//指向下一个元素
    71             }
    72             //foreach
    73             for (Object o:coll) {
    74                 System.out.println(o);
    75             }
    76         }
    77     
    78     
    79 }

    List接口代码案例:

     1 package list;
     2 
     3 import java.util.ArrayList;
     4 import java.util.Iterator;
     5 import java.util.List;
     6 
     7 import org.junit.Test;
     8 
     9 public class TestList {
    10     @Test
    11     public void test(){
    12         
    13         List list=new ArrayList();
    14         //添加元素
    15         list.add("123");
    16         list.add(12);
    17         list.add(1,"添加");  //指定位置
    18         System.out.println(list);
    19         
    20         //根据索引查询
    21         System.out.println(list.get(1));
    22         
    23     }
    24     @Test
    25     public void test1(){
    26         List list=new ArrayList();
    27         list.add("孙尚香");
    28         list.add("孙悟空");
    29         list.add("猪八戒");
    30         list.add("张磊");
    31         
    32         //遍历
    33         //第一种for循环
    34         for(int i=0;i<list.size();i++){
    35             System.out.println(list.get(i));
    36         }
    37         
    38         //第二种foreach
    39         for(Object o:list){
    40             System.out.println(o);
    41         }
    42         //第三种 迭代
    43         Iterator i=list.iterator();
    44         while(i.hasNext()){  //判断当前元素下面有没有下一个元素
    45             System.out.println(i.next());//指向下一个元素
    46         }
    47     }
    48 }

    set接口代码案例:

     1 package list;
     2 
     3 import java.util.HashSet;
     4 import java.util.Iterator;
     5 import java.util.Set;
     6 
     7 import org.xml.sax.HandlerBase;
     8 
     9 /**
    10  * set:无序的,不可重复的
    11  *   无序:不是随机,值得是元素在底层存储的位置是无序的
    12  *   不可重复:在set添加相同元素时,后面的无法添加
    13  *   set没有自定义方法
    14  * @author ASUS
    15  *
    16  */
    17 public class TextSet {
    18 
    19     public static void main(String[] args) {
    20         Set set=new HashSet();
    21         System.out.println(set.size());
    22     //添加
    23         set.add("张磊");
    24         set.add(123);
    25         set.add("12.3");
    26         set.add(123);
    27         System.out.println(set);
    28         String str=new String("李四");
    29         set.add(str);
    30         System.out.println(str.hashCode());
    31         
    32         //遍历set
    33         //第一中:foreach
    34         for(Object o:set){
    35             System.out.println(o);
    36         }
    37         //第二种:迭代器
    38         Iterator i=set.iterator();
    39         while(i.hasNext()){
    40             System.out.println(i.next());
    41         }
    42         
    43     }
    44 
    45 }

    Set和List的区别

    • 1. Set 接口实例存储的是无序的,不重复的数据。List 接口实例存储的是有序的,可以重复的元素。

    • 2. Set检索效率低下,删除和插入效率高,插入和删除不会引起元素位置改变 <实现类有HashSet,TreeSet>

    • 3. List和数组类似,可以动态增长,根据实际存储的数据的长度自动增长List的长度。查找元素效率高,插入删除效率低,因为会引起其他元素位置改变 <实现类有ArrayList,LinkedList,Vector> 。

    map接口代码案例:

     1 package map;
     2 
     3 import java.util.Collection;
     4 import java.util.HashMap;
     5 import java.util.Map;
     6 import java.util.Map.Entry;
     7 import java.util.Set;
     8 
     9 import org.junit.Test;
    10 
    11 /**
    12  * map:以key-value的形式进行存储,主要实现类HashMap()
    13  *
    14  */
    15 
    16 public class TextMap {
    17     
    18     @Test
    19     public  void test(){
    20 //        Object put(Object key,Object value):添加元素到map
    21 //        Object remove(Object key):根据key删除对应的元素
    22 //        void putAll(Map t)
    23 //        void clear():清除
    24         
    25         Map map=new HashMap();
    26         //1.添加
    27         map.put("1", "张三");
    28         map.put(2, "李四");
    29         map.put(5, 12.3);
    30         map.put("123", 123);
    31         /**
    32          * key是通过set存储的,不可重复,无序,value是通过collection进行存储的,可重复。
    33          * key+value等于一个entry,所entry同等于set,不可重复
    34          * 如果添加的时候出现重复,后面的把前面的覆盖了
    35          */
    36         map.put(5, "王五");
    37         System.out.println(map);
    38         System.out.println(map.size());
    39         map.remove(2);
    40         System.out.println(map);
    41         
    42 //        Object get(Object key):根据key查询对应的value
    43 //        boolean containsKey(Object key):判断当前map是否包含指定的key
    44 //        boolean containsValue(Object value):判断当前map是否包含指定的value
    45 //        int size()
    46 //        boolean isEmpty()
    47 //        boolean equals(Object obj)
    48         
    49         System.out.println(map.get(5));
    50         System.out.println(map.containsKey(5));
    51         System.out.println(map.containsValue("王五"));
    52 
    53     }
    54     
    55     @Test
    56     public void test1(){
    57         Map map=new HashMap();
    58         //1.添加
    59         map.put("1", "张三");
    60         map.put(2, "李四");
    61         map.put(5, 12.3);
    62         map.put("123", 123);
    63         
    64 //        Set keySet():遍历所有的key
    65 //        Collection values():遍历所有的value
    66 //        Set entrySet():遍历所有的entry
    67         
    68         System.out.println("==============遍历所有的key");
    69         Set set=map.keySet();
    70         for(Object o:set){
    71             System.out.println(o);
    72         }
    73         
    74         System.out.println("============遍历所有的value");
    75         Collection coll=map.values();
    76         for(Object o:coll)
    77         System.out.println(o);
    78         
    79         //遍历所有的key和value   key:value
    80         System.out.println("================");
    81         Set set1=map.keySet();
    82         for(Object o:set1){
    83             System.out.println(o+":"+map.get(o));
    84         }
    85         
    86         System.out.println("=============");
    87         Set set2=map.entrySet();
    88         for(Object o:set2){
    89             //把o转成entry
    90             Entry entry=(Entry)o;
    91             System.out.println(entry.getKey()+":"+entry.getValue());
    92         }
    93     }
    94 
    95 }

    泛型:(后续详细学习)

     1 package map;
     2 
     3 import java.util.ArrayList;
     4 import java.util.List;
     5 
     6 /**
     7  * 泛型:指定集合只能添加什么类型的数据
     8  * @author ASUS
     9  *
    10  */
    11 public class Test {
    12 
    13     @org.junit.Test
    14     public void test(){
    15         List<Integer> list=new ArrayList<Integer>();
    16         list.add(90);
    17         list.add(80);
    18         list.add(99);
    19         list.add(90);
    20         
    21         for(int i=0;i<list.size();i++){
    22             int score=list.get(i);
    23             System.out.println(score);
    24         }
    25         
    26     }
    27 }

    如何使用迭代器

    通常情况下,你会希望遍历一个集合中的元素。例如,显示集合中的每个元素。

    一般遍历数组都是采用for循环或者增强for,这两个方法也可以用在集合框架,但是还有一种方法是采用迭代器遍历集合框架,它是一个对象,实现了Iterator 接口或 ListIterator接口。

    迭代器,使你能够通过循环来得到或删除集合的元素。ListIterator 继承了 Iterator,以允许双向遍历列表和修改元素。

     更多:https://www.runoob.com/java/java-collections.html

  • 相关阅读:
    JAVA日报
    JAVA日报
    JAVA日报
    JAVA
    leetcode刷题笔记 222题 完全二叉树的节点个数
    leetcode刷题笔记 221题 最大正方形
    leetcode刷题笔记 220题 存在重复元素 III
    leetcode刷题笔记 219题 存在重复元素 II
    leetcode刷题笔记 218题 天际线问题
    leetcode刷题笔记 216题 组合总和 III
  • 原文地址:https://www.cnblogs.com/yumu77/p/13756348.html
Copyright © 2011-2022 走看看