zoukankan      html  css  js  c++  java
  • 【java开发系列】—— 集合使用方法

    前言

      在java中提供给我们了一些类似C++泛型的简单集合,list,set,map等。这里,简单介绍一下这些集合容器的使用方法,以及复杂对象元素的自定义排序。

      首先看一下集合的框架图:

      由于collection也继承了Iterator和comparable接口,因此我们可以使用Iterator来遍历元素,也可以通过自定义compareTo函数来重新编写自己的排序。

      List

     1 package testCollection;
     2 
     3 import java.util.ArrayList;
     4 import java.util.Iterator;
     5 import java.util.List;
     6 
     7 public class testList {
     8     public static void main(String[] args){
     9         List list = new ArrayList();
    10         list.add("test1");
    11         list.add("test2");
    12         list.add("test3");
    13         
    14         System.out.println("out by for!");
    15         for(Object o : list){
    16             System.out.println(o);
    17         }
    18         
    19         System.out.println("out by iterator!");
    20         Iterator iterator = list.iterator();
    21         while(iterator.hasNext()){
    22             String element = (String)iterator.next();
    23             System.out.println(element);
    24         }
    25     }
    26 }

    运行结果

    out by for!
    test1
    test2
    test3
    out by iterator!
    test1
    test2
    test3

    Set,如果遇到重复的元素,不会添加

     1 package testCollection;
     2 
     3 import java.util.HashSet;
     4 import java.util.Set;
     5 
     6 public class testSet {
     7     public static void main(String[] args){
     8         Set set = new HashSet();//使用set一般都是用hashset,这个会快一些
     9         set.add("test1");
    10         set.add("test2");
    11         if(set.add("test2")){
    12             System.out.println("add successful");
    13         }else{
    14             System.out.println("add failed");
    15         }
    16     }
    17 }

    运行结果

    add failed

    Map

     1 package testCollection;
     2 
     3 import java.util.HashMap;
     4 import java.util.Map;
     5 import java.util.Set;
     6 
     7 public class testMap {
     8     public static void main(String[] args){
     9         Map map = new HashMap();
    10         
    11         map.put(1, "test1");
    12         map.put(2, "test2");
    13         
    14         System.out.println("size "+map.size());
    15         System.out.println(map.get(1));
    16         
    17         Set keys = map.keySet();
    18         for(Object key : keys){
    19             System.out.println(key);
    20         }
    21         
    22         map.remove(2);
    23         System.out.println("size "+map.size());
    24     }
    25 }

    运行结果

    size 2
    test1
    1
    2
    size 1

    自定义排序函数

    person类,继承Comparable接口,重载compareTo函数

     1 package testCollection;
     2 
     3 public class Person implements Comparable{
     4     private String name;
     5     private int age;
     6     public String getName() {
     7         return name;
     8     }
     9     public void setName(String name) {
    10         this.name = name;
    11     }
    12     public int getAge() {
    13         return age;
    14     }
    15     public void setAge(int age) {
    16         this.age = age;
    17     }
    18     public Person(String name,int age){
    19         this.name = name;
    20         this.age = age;
    21     }
    22     @Override
    23     public int compareTo(Object person) throws ClassCastException {
    24         if(!(person instanceof Person)){
    25             throw new ClassCastException("A Person perspected!");
    26         }
    27         int age = ((Person)person).getAge();
    28         return this.age-age;
    29     }
    30 }

    测试类

     1 package testCollection;
     2 
     3 import java.util.Arrays;
     4 
     5 public class testComparable {
     6     public static void main(String[] args){
     7         Person[] persons = new Person[4];
     8         persons[0] = new Person("test1",18);
     9         persons[1] = new Person("test2",20);
    10         persons[2] = new Person("test3",15);
    11         persons[3] = new Person("test4",19);
    12         
    13         System.out.println("before sorting!");
    14         
    15         for(Person p : persons){
    16             System.out.println("name: "+p.getName()+" age: "+p.getAge());
    17         }
    18         
    19         System.out.println("after sorting!");
    20         Arrays.sort(persons);
    21         for(Person p : persons){
    22             System.out.println("name: "+p.getName()+" age: "+p.getAge());
    23         }
    24     }
    25 }

    运行结果

    before sorting!
    name: test1 age: 18
    name: test2 age: 20
    name: test3 age: 15
    name: test4 age: 19
    after sorting!
    name: test3 age: 15
    name: test1 age: 18
    name: test4 age: 19
    name: test2 age: 20
  • 相关阅读:
    论如何O(1)快速乘
    luogu3605晋升者计数
    分数规划小结
    洛谷 P1589 泥泞路 & 2019青岛市竞赛(贪心)
    洛谷 P3368 【模板】树状数组 2(区间加,单点查询)
    前缀和序列 & 差分序列
    洛谷 P3374 【模板】树状数组 1(单点加,区间和)
    2019青岛市程序设计竞赛游记
    0x3f3f3f3f 0xbfbfbfbf 等的原理及应用
    memset 初始化数组 & 实现原理
  • 原文地址:https://www.cnblogs.com/xing901022/p/3965026.html
Copyright © 2011-2022 走看看