• 集合


    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”映射关系的集合

  • 相关阅读:
    Python 类中方法的内部变量,命名加'self.'变成 self.xxx 和不加直接 xxx 的区别
    用foreach遍历 datagridView 指定列所有的内容
    treeView1.SelectedNode.Level
    YES NO 上一个 下一个
    正则 单词全字匹配查找 reg 边界查找 精确匹配 只匹配字符 不含连续的字符
    抓取2个字符串中间的字符串
    sqlite 60000行 插入到数据库只用不到2秒
    将多行文本以单行的格式保存起来 读和写 ini
    将秒转换成时间格式
    richtextbox Ctrl+V只粘贴纯文本格式
  • 原文地址:https://www.cnblogs.com/beatIteWeNerverGiveUp/p/5352197.html
Copyright © 2020-2023  润新知