zoukankan      html  css  js  c++  java
  • 集合

    1 Java的集合可以分为Collection和Map两种体系

    ①Conllection接口

    set:元素无序,不可重复

    list:元素有序,可以重复

    实例代码讲解:

     1 import java.util.ArrayList;
     2 import java.util.Date;
     3 import java.util.Iterator;
     4 import java.util.LinkedHashSet;
     5 import java.util.List;
     6 import java.util.Set;
     7 
     8 import org.junit.Test;
     9 
    10 /*
    11  * 存储方式:1.顺序结构 2.链式存储
    12  * 
    13  * 1.数据的存储的“容器”:①数组 int[] arr = new int[10]②集合
    14  * 2.Collection:用来存储一个一个的数据
    15  *         |-----Set:存储无序的、不可重复的数据--相当于高中的"集合"--“哈希算法”
    16  *             |----HashSet:主要的实现类
    17  *                 |----LinkedHashSet:对于频繁的遍历,效率高
    18  *             |----TreeSet:可以按照添加的元素的指定属性进行排序遍历(自然排序Comparable(compareTo(Object obj))&定制排序Comparator(compare(Obejct obj1,Object obj2)))
    19  *         |-----List:存储有序的、可以重复的数据--相当于"动态"数组
    20  *             |----ArrayList:主要实现类,线程不安全的
    21  *             |----LinkedList:对于频繁的插入、删除操作,效率高于ArrayList
    22  *             |----Vector:古老的实现类,线程安全的
    23  * 
    24  *   Map:用来存储一对一对的数据(key-value)---相当于y = f(x). y = x + 1;(x1,y1)(x2,y2)
    25  *           |----HashMap
    26  *               |----LinkedHashMap
    27  *           |----TreeMap
    28  *           |----Hashtable
    29  *               |----Properties
    30  */
    31 public class TestCollection {
    32 
    33     @Test
    34     public void test2(){
    35         Set set = new LinkedHashSet();
    36         set.add(123);
    37         set.add("AA");
    38         set.add("MM");
    39         set.add("GG");
    40         set.add("GG");
    41         //原则:添加自定义类的对象到Set中时,需要自定义对象所在的类重写:equals()且hashCode();
    42         set.add(new Person("谢霆锋",32));
    43         set.add(new Person("谢霆锋",32));
    44         set.add(new Person("王菲",23));
    45         
    46         System.out.println(set.toString());
    47         
    48     }
    49     @Test
    50     public void test1(){
    51         List list = new ArrayList();
    52         System.out.println(list.size());//0
    53         
    54         list.add("AA");
    55         list.add(123);
    56         list.add(123);
    57         list.add(new Date());
    58         
    59         Iterator iterator = list.iterator();
    60         while(iterator.hasNext()){
    61             System.out.println(iterator.next());
    62         }
    63         
    64     }
    65 }
     1 public class Person {
     2     String name;
     3     int age;
     4     public Person(String name, int age) {
     5         super();
     6         this.name = name;
     7         this.age = age;
     8     }
     9     @Override
    10     public String toString() {
    11         return "Person [name=" + name + ", age=" + age + "]";
    12     }
    13     @Override
    14     public int hashCode() {
    15         final int prime = 31;
    16         int result = 1;
    17         result = prime * result + age;
    18         result = prime * result + ((name == null) ? 0 : name.hashCode());
    19         return result;
    20     }
    21     @Override
    22     public boolean equals(Object obj) {
    23         if (this == obj)
    24             return true;
    25         if (obj == null)
    26             return false;
    27         if (getClass() != obj.getClass())
    28             return false;
    29         Person other = (Person) obj;
    30         if (age != other.age)
    31             return false;
    32         if (name == null) {
    33             if (other.name != null)
    34                 return false;
    35         } else if (!name.equals(other.name))
    36             return false;
    37         return true;
    38     }
    39     
    40     
    41 }

    如何实现List、Set,数组之间的转换

    ArraryList list=new ArraryList()    造一个数组链表list

    Set set=new HashSet(list)  把list转化成Set

    List list1=new ArraryList(set)  把set转化为list1

    ②Map接口:具有“key-value”映射关系的集合

  • 相关阅读:
    Object.keys
    数组内容深拷贝的应用
    CSS如何让页脚固定在页面底部
    vue eslint开发 关掉 tab错误提示
    input框,需要隐式显示的时候,不让它自动填充的办法
    关于BFC
    File协议与HTTP协议 以及区别
    关于缓存
    深拷贝浅拷贝 遇到了bug
    聚餐学习
  • 原文地址:https://www.cnblogs.com/beatIteWeNerverGiveUp/p/5352197.html
Copyright © 2011-2022 走看看