亲宝软件园·资讯

展开

Java集合 Java集合功能与用法实例详解

随风行云 人气:0

本文实例讲述了Java集合功能与用法。分享给大家供大家参考,具体如下:

本文内容:

首发日期:2018-05-17


什么是集合:

PS:


Collection:

介绍:

方法(父接口定义的方法,实现类中都会有)【具体使用看下面的具体实现类】:

集合的获取依赖于迭代器Iterator。

补充:


Iterator:

介绍:

迭代方法:

示例:

package 集合;


import java.util.ArrayList;
import java.util.Iterator;
public class IteratorDemo {
  public static void main(String[] args) {
    ArrayList q=new ArrayList();
    //增
    q.add("a");
    q.add("b");
    q.add("c");
    q.add("d");
    //使用迭代器迭代
    for(Iterator it=q.iterator();it.hasNext();) {
      Object obj=it.next();
      System.out.println(obj);//a b c d
      if(obj=="a")
        it.remove();
    }
    //删除后查看一下
    System.out.println(q);
  }
}

补充:


List:

介绍:

image

特有方法(除了Collection中有的方法):

常用实现类:

ArrayList:

import java.util.ArrayList;
import java.util.Iterator;
public class ListDemo {
  public static void main(String[] args) {
    ArrayList q=new ArrayList();
    //增
    q.add("a");
    q.add("b");
    ArrayList a=new ArrayList();
    a.addAll(q);
    a.add("c");
    a.add("d");
    System.out.println(a);//[a, b, c, d],实现了toString,所以可以直接打印出来。
    //删
//    a.remove("a");
    a.remove(0);
    //查
    System.out.println(a.size());//3
    System.out.println(a.contains("b"));//true
    System.out.println(a.isEmpty());//false
    System.out.println(a);//[b, c, d]
    //改
    a.set(0, "bag");
    System.out.println(a);
    //使用迭代器迭代
    for(Iterator it=a.iterator();it.hasNext();) {
      System.out.println(it.next());//c d
    }

  }

}

LinkedList:

补充:


set

介绍:

image

新增方法:无新增方法,基本都是Collection中声明的方法。

常用实现类:

HashSet:

image

TreeSet:

LinkHashSet:

image

解决集合的元素的重复:

import java.util.HashSet;
import java.util.Set;
class Student{
  String name;
  int age;
  Student(String name,int age){
    this.name=name;
    this.age=age;
  }
  public String toString() {//重写方法,以便sysout能输出
    return "Student [name=" + name + ", age=" + age + "]";
  }
  public int hashCode() {//这里使用的是自动生成的代码,也可以使用自己的规则
    final int prime = 31;
    int result = 1;
    result = prime * result + age;
    result = prime * result + ((name == null) ? 0 : name.hashCode());
    return result;
  }
  public boolean equals(Object obj) {//这里使用的是自动生成的代码,也可以使用自己的规则
    if (this == obj)//如果两个地址相同,返回true
      return true;
    if (obj == null)
      return false;
    if (getClass() != obj.getClass())
      return false;
    Student other = (Student) obj;
    if (age != other.age)
      return false;
    if (name == null) {
      if (other.name != null)
        return false;
    } else if (!name.equals(other.name))//这里根据姓名和年龄来判断元素是否相同
      return false;
    return true;
  }
  
}

public class HashSetDemo {

  public static void main(String[] args) {
    Set s=new HashSet();
//    s.add("abc");
//    s.add("abc");
//    System.out.println(s);//这里因为可以使用自带的判断方法,所以不会发生重复
    
//    s.add(new Student("lilei",18));
//    s.add(new Student("lilei",18));
//    System.out.println(s);//这里因为判断两个地址是不同的,所以会重复。
    
//    在重写equals之后:
    s.add(new Student("lilei",18));
    s.add(new Student("lilei",18));
    System.out.println(s);//不发生重复。

  }

}

解决TreeSet的排序问题:

import java.util.Comparator;
import java.util.TreeSet;
class CompareByLength implements Comparator{

  public int compare(Object o1, Object o2) {
    
    Student3 stu1=(Student3)o1;
    Student3 stu2=(Student3)o2;
    return stu1.name.length()-stu2.name.length();
//    注意,这里也与compareTo类似,定义的规则必须要考虑到重复性,不然会导致属性值相同的元素
//    认为是同一元素
  }
  
}

class Student3 {
  String name;
  int age;
  Student3(String name,int age){
    this.name=name;
    this.age=age;
  }
  public String toString() {
    return "Student2 [name=" + name + ", age=" + age + "]";
  }
}
public class TreeSetDemo2 {
  public static void main(String[] args) {
    
    TreeSet t=new TreeSet(new CompareByLength());
    t.add(new Student3("aaa",18));
    t.add(new Student3("a",18));
//    t.add(new Student3("d",18));//这里是元素重复性的检测,原因在compare
    t.add(new Student3("aa",17));
    t.add(new Student3("cccccccccc",17));
    System.out.println(t);
  }
}

Map:

介绍:

常见方法:

重要实现类:

HashMap:

TreeMap:

Properties:

嵌套类:

Map.Entry<K,V>

public class MapDemo {
  public static void main(String[] args) {
    Map m=new HashMap();
    m.put("hanmeimei", "lilei");
    m.put("wodeta", "wo");
    m.put("apple", "google");
    Set s=m.entrySet();
    for(Iterator it=s.iterator();it.hasNext();) {
      Map.Entry me=(Entry) it.next();
      System.out.println(me.getKey()+"...."+me.getValue());
    }
  }
}

Collections工具类:

介绍:

常用方法:

import java.util.ArrayList;
import java.util.Collections;
public class ListDemo2 {
  public static void main(String[] args) {
    ArrayList q=new ArrayList();
    q.add("a");
    q.add("z");
    q.add("b");
    q.add("c");
    System.out.println(Collections.max(q));
    System.out.println(q);
    Collections.sort(q);
    System.out.println(q);

  }
}

想了解更多,可以自行查看jdk文档。

希望本文所述对大家java程序设计有所帮助。

加载全部内容

相关教程
猜你喜欢
用户评论