zoukankan      html  css  js  c++  java
  • Java第十四章 之 List、Set

      1 /*
      2 
      3 List接口:元素存储有序、带有索引、可以重复元素的集合
      4 
      5              常用子类有ArrayList、LinkedList
      6 
      7              add(Object obj) 向集合末尾处添加指定元素
      8 
      9              add(int index , Object obj)向集合指定索引处添加元素,原有元素依次后移
     10 
     11  
     12 
     13              remove(Object obj) 将指定元素对象,从集合中删除,返回值为被删除的元素
     14 
     15              remove(int index) 将指定索引处的元素,从集合中删除,返回值为被删除的元素
     16 
     17  
     18 
     19              set(int index , Object o) 将指定索引处的元素,替换成指定元素,返回值为替换前的元素
     20 
     21  
     22 
     23              get(int index) 获取指定索引处的元素,并返回该元素
     24 
     25 ArrayList是数组结构,元素查询快,增删慢
     26 
     27 LinkedList是链表结构,元素查询慢,增删快
     28 
     29 void addFirst(E e)将指定元素插入此列表的开头
     30 
     31 void addList(E e)将指定元素插入此列表的末尾
     32 
     33 E getFirst()返回此列表的第一个元素
     34 
     35 E getLast()返回此列表的最后一个元素
     36 
     37 E removeFirst() 移除并返回此列表的第一个元素
     38 
     39 E removeLast() 移除并返回此列表的最后一个元素
     40 
     41 E pop()从列表所表示的堆栈处弹出一个元素
     42 
     43 void push(E e) 将元素推入此列表所表示的堆栈
     44 
     45 boolean isEmpty()如果列表不包含元素,则返回true
     46 
     47 */
     48 
     49 public class listDemo{
     50 
     51      public static void main(String[] args){
     52 
     53         List<String>  list = new ArrayList<String>();
     54 
     55         list.add("张三“);
     56 
     57         list.add("李四");
     58 
     59         list.add("王五");
     60 
     61         list.add(1 , "马五");
     62 
     63         list.remove(2);
     64 
     65         list.set(1,"马四");
     66 
     67         for(int i = 0 ; i < list.size() ; i++){
     68 
     69              String str = list.get(i);
     70 
     71         System.out.println(str);
     72 
     73         }
     74 
     75     }
     76 
     77 }
     78 
     79  
     80 
     81 /*
     82 
     83 Set接口:元素不可重复,通过元素的equals方法,来判断是否为重复元素
     84 
     85 HashSet(实际上是一个HashMap集合),HashSet集合不能保证迭代顺序与元素存储顺序相同
     86 
     87 HashSet采用哈希表结构存储数据,保证元素唯一性的方式依赖于hashCode()与equals()方法
     88 
     89 HashSet中存储JavaAPI中提供的类型元素时,不需要重写元素的hashCode和equalsf方法,这两个方法已经在JavaAPI每个类中重写
     90 
     91 HashSet中存储自定义类型元素时,需要重写对象中的hashCode和equals方法,建立自己的比较方式,才能保证HashSet集合中对象的唯一
     92 
     93 LinkedHashSet链表和哈希表组合的一个的数据存储结构,保证元素的存入和取出的顺序
     94 
     95 */
     96 
     97 public class SetDemo{
     98 
     99      public static void main(String[] args){
    100 
    101           HashSet<String> hs = new HashSet<String>();
    102 
    103           hs.add("张三");
    104 
    105           hs.add("李四");
    106 
    107           Iterator it = set.iterator();
    108 
    109           while(it.hasNext()){
    110 
    111                   Strign s = it.next();
    112 
    113               System.out.println(s);
    114 
    115           }
    116 
    117      }
    118 
    119 }
    120 
    121 public class Student{
    122 
    123     private String name;
    124 
    125     private int age;
    126 
    127     public Student(){
    128 
    129     }
    130 
    131     public Student(String name , int age){
    132 
    133        super();
    134 
    135        this.name = name;
    136 
    137        this.age = age;
    138 
    139     } 
    140 
    141     public void setName(String name){
    142 
    143          this.name = name;
    144 
    145     }
    146 
    147    public String getName(){
    148 
    149        return name;
    150 
    151    }
    152 
    153    public void setAge(int age){
    154 
    155       this.age = age;
    156 
    157    }
    158 
    159    public int getAge(){
    160 
    161       this.age = age;
    162 
    163    }
    164 
    165 @Override
    166       public int hashCode() {
    167          final int prime = 31;
    168          int result = 1;
    169          result = prime * result + age;
    170          result = prime * result + ((name == null) ? 0 : name.hashCode());
    171          return result;
    172 
    173       }
    174 
    175 @Override
    176 public boolean equals(Object obj) {
    177   if (this == obj)
    178   return true;
    179   if (obj == null)
    180   return false;
    181   if (getClass() != obj.getClass())
    182   return false;
    183   Student other = (Student) obj;
    184   if (age != other.age)
    185   return false;
    186   if (name == null) {
    187   if (other.name != null)
    188   return false;
    189   } else if (!name.equals(other.name))
    190     return false;
    191     return true;
    192   }
    193    @Override
    194    public String toString() {
    195        return "Student [name=" + name + ", age=" + age + "]";
    196      }
    197 
    198 }
    199 
    200 public static void main(String[] args) {
    201       HashSet<Student>  hs = new HashSet<Student>();
    202           hs.add(new Student("张三" , 20));
    203           hs.add(new Student("李四" , 20));
    204           hs.add(new Student("王五" , 20));
    205 
    206       for(Student st : hs){
    207 
    208           Syste.out.println(st.getName() +" "+ st.getAge());
    209 
    210       }
    211 
    212 /*
    213 
    214 ArrayList :  boolean contains(Object obj)如果此列表中包含指定的元素,则返回true
    215 
    216                   传入的元素的equals方法依次与集合中的旧元素比较,根据返回的布尔值判断是否有重复的元素,存放自定义类型时,由于自定义类型未重写equals方法,判断是否重复的依据是地址值,想判断内容是否有重复的元素,需要重写equals方法
    217 
    218 HashSet : boolean add(E e)如果此set中没有包含指定元素,则添加指定元素
    219 
    220                  boolean contains(Object o) 如果此set中包含指定元素,则返回true
    221 
    222                  添加方法在添加时会判断是否有重复元素,有重复不添加,没重复则添加
    223 
    224                  由于是无序的,判断唯一的依据是元素类型的hashCode与equals方法的返回结果:
    225 
    226                  先判断新元素和集合中的旧元素的hashCode值:
    227 
    228                  如果不同,说明是不同元素,添加到集合
    229 
    230                   如果相同,再判断equals比较结果,返回true则相同元素,返回false则不同元素,添加到集合
    231 
    232                   存储自定义类型,如果没有重写该类的hashCode与equals方法时,则判断重复时,使用的是地址值,如果想通过内容比较元素是否相同,需要重写hashCode与equals方法
    233 
    234 */
  • 相关阅读:
    Android开发 ViewConfiguration View的配置信息类
    Android 开发 倒计时功能 转载
    Android 开发 关于7.0 FileUriExposedException异常 详解
    Android 开发 实现文本搜索功能
    Android 开发 Activity里获取View的宽度和高度 转载
    Android 开发 存储目录的详解
    Android 开发 Fresco框架点击小图显示全屏大图实现 ZoomableDraweeView
    Android 开发 将window变暗
    Android 开发 DisplayMetrics获取Android设备的屏幕高宽与其他信息
    Android 开发 DP、PX、SP转换详解
  • 原文地址:https://www.cnblogs.com/z97-/p/12673312.html
Copyright © 2011-2022 走看看