• java基础学习——集合


    -------|List: 有存储顺序, 可重复
    -----------|ArrayList: 数组实现, 查找快, 增删慢,由于是数组实现, 在增和删的时候会牵扯到数组增容, 以及拷贝元素. 所以慢。数组是可以直接按索引查找, 所以查找时较快
    -----------|LinkedList: 链表实现, 增删快, 查找慢由于链表实现, 增加时只要让前一个元素记住自己就可以, 删除时让前一个元素记住后一个元素, 后一个元素记住前一个元素. 这样的增删   效率较高但查询时需要一个一个的遍历, 所以效率较低
    -----------|Vector: 和ArrayList原理相同, 但线程安全, 效率略低和ArrayList实现方式相同, 但考虑了线程安全问题, 所以效率略低
    -------|Set: 无存储顺序, 不可重复
    -----------|HashSet 线程不安全,存取速度快。底层是以哈希表实现的。
    -----------|TreeSet 红-黑树的数据结构,默认对元素进行自然排序(String)。如果在比较的时候两个对象返回值为0,那么元素重复。
    -------| Map: 键值对 键不可重复,键可以重复
    -----------|HashMap 线程不安全,存取速度快。底层是以哈希表实现的.
    -----------|TreeMap 红-黑树的数据结构,默认对元素进行自然排 序(String)。如果在比较的时候两个对象返回值为0,那么元素重复
    -----------|HashTable 底层也是使用了哈希表 维护的,存取的读取快,存储元素是 无序的。

    一、HashSet集合:无序存储,不可重复

    当我们想创建一个hashset集合,往HashSet内添加元素的时候,会首先调用HashCode方法得到哈希值,然后把哈希值经过运算 算出来该元素在哈希表中位置,如果该位置不存在别的元素则直接加进去,如果存在别的元素则调用equals()方法与该位置上的方法比较一次。

    1.元素为string类型,可以直接用HashSet<string>集合来创建,string集合重写了hashcode()equals()方法

    2.元素为自定义对象,需要重写重写了hashcode()equals()方法。

     1 class Person {
     2     int id;
     3     String name;
     4     
     5     public Person (int id, String name ){
     6         super();
     7         this.id= id;
     8         this.name= name;
     9     }
    10     @Override
    11     public int hashCode() {
    12         // TODO Auto-generated method stub
    13         return this.id;
    14     }
    15     @Override
    16     public boolean equals(Object obj) {
    17         Person person = new Person(id, name);
    18         return this.id==person.id;
    19     }
    20     @Override
    21     public String toString() {
    22         return "编号:"+this.id+"  姓名:"+this.name +"   hashcode:"+this.hashCode();
    23     }
    24 }
    25 public class demo1 {
    26     public static void main(String[] args) {
    27         HashSet<Person> set = new HashSet<Person>();
    28         set.add(new Person(001,"jjj"));
    29         set.add(new Person(001,"jjj"));
    30         System.out.println("集合的元素:"+set);
    31     }
    32 }

     运行结果:

    集合的元素:[编号:1 姓名:jjj hashcode:1]

     二、集合的遍历

     1     public static void main(String[] args) {
     2         ArrayList<String > list = new ArrayList<>();
     3         list.add("张三");
     4         list.add("李四");
     5         list.add("王五");
     6         System.out.println("----------get方式遍历----------");
     7         for (int i = 0; i < list.size(); i++) {
     8             System.out.println(i+":"+list.get(i));
     9         }
    10         
    11         
    12         //迭代器遍历
    13         
    14         HashSet<String > hashSet = new HashSet<>();
    15         hashSet.add("老大");
    16         hashSet.add("老二");
    17         hashSet.add("老三");
    18         System.out.println("---------迭代器遍历----------");
    19         Iterator<String> iterator = hashSet.iterator();
    20         while (iterator.hasNext()) {
    21             System.out.println(iterator.next());
    22         }
    23         
    24         for(String item:hashSet){
    25             System.out.println(item+",");
    26         }
    27         
    28         Map<String , String > map = new HashMap<String , String >();
    29         map.put("001","z001");
    30         map.put("002","z002");
    31         map.put("003","z003");
    32         Set<Entry<String, String>> entrySet = map.entrySet();
    33         for (Entry<String, String> entry : entrySet) {
    34             System.out.println("key:"+entry.getKey()+"    value:"+entry.getValue());
    35         }
    36     }
  • 相关阅读:
    eclipse导入github项目
    深入理解BFC和Margin Collapse
    前端开发必备!Emmet使用手册
    Backbone.js的技巧和模式
    智能选择器和语义化的CSS
    IE常见BUG总结(持续更新)
    表格元素的完全指南(译)
    display:inline-block;在各浏览器下的问题和终极兼容办法
    float的深入剖析
    javascript正则表达式小技巧
  • 原文地址:https://www.cnblogs.com/wy0904/p/7460025.html
Copyright © 2020-2023  润新知