• 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 */
  • 相关阅读:
    MySQL实战 | 01-当执行一条 select 语句时,MySQL 到底做了啥?
    人人都能看懂的云计算知识科普
    教你用 Python 实现抖音热门表白软件
    Docker中“TERM environment variable not set.”问题
    centos 6.5安装docker
    centos6安装docker,先升级系统内核
    MySQL中一个sql语句包含in优化问题
    阿里云提示ECS服务器存在漏洞处理方法
    yum安装 指定安装目录
    nginx重启报错:nginx: [error] invalid PID number "" in "/run/nginx.pid"
  • 原文地址:https://www.cnblogs.com/z97-/p/12673312.html
Copyright © 2020-2023  润新知