Java 集合类(一) - Go语言中文社区

Java 集合类(一)


今天我们先讲一下Collection:

  1. Collection和Collections的区别:
  • java.util.Collection是一种java集合接口,它提供了对集合对象的基本操作通用接口方法,同时它还有很多具体实现:

     

     

     注:以上图片只列举常用集合类

  • java.util.Collections是一个包装类,它包含许多有关集合操作的静态多态方法,此类不能实例化,它就像个工具类,服务与java的Collection。有关Collections的具体方法可参考JDK说明文档(部分也可见),下面我举出几个方法示例:

      

import java.util.Collection;
import java.util.Collections;
import java.util.ArrayList;
import java.util.List;

public class test {
    private double[] a = {123,33,423,655,4553};
    List<Double> l = new ArrayList();
    List<Double> l2 = new ArrayList();

	public static void main(String[] args) {
             new test().sort();
	}
	
	public void sort(){
		for(int i = 0; i<a.length;i++ ){
			l.add(a[i]);
		}
		Collections.sort(l);
		for(int i = 0 ;i<a.length;i++){
			System.out.println(l.get(i));
		}
	}

}

  运行结果如下:

可在上面代码的基础上添加同类方法,如:

把上面sort()中的Collections.sort(l);--->Collections.shuffle(l);    //随机排序

                                                   --->Collections.reverse(l);    //反转排序

                                                   --->Collections.min(l);      //返回最小元素(max,最大)

                                                   --->Collections.fill(l,"334");   //用334替换所有元素

                                                   ......

 

   2.常见java容器的比较:

接口

特性

实现类

实现类特性

成员要求

List

线性、有序的存储容器,可通过索引访问元素

ArrayList

数组实现。非同步。

 

Vector

类似ArrayList,同步。

 

LinkedList

双向链表。非同步。

 

Map

保存键值对成员

HashMap

基于哈希表的 Map 接口的实现,满足通用需求

任意Object对象,如果修改了equals方法,需同时修改hashCode方法

TreeMap

默认根据自然顺序进行排序,

或者根据创建映射时提供的 Comparator进行排序

键成员要求实现Comparable接口,或者使用Comparator构造TreeMap。键成员一般为同一类型。

LinkedHashMap

类似于HashMap,但迭代遍历时取得“键值对”的顺序是其插入顺序或者最近最少使用的次序

与HashMap相同

IdentityHashMap

使用==取代equals()对“键值”进行比较的散列映射

成员通过==判断是否相等

WeakHashMap

弱键映射,允许释放映射所指向的对象

 

ConcurrentHashMap

线性安全的Map

 

Set

成员不能重复

HashSet

为快速查找设计的Set

元素必须定义hashCode()

TreeSet

保持次序的Set,底层为树结构

元素必须实现Comparable接口

LinkedHashSet

内部使用链表维护元素的顺序(插入的次序)

元素必须定义hashCode()

    注:在满足要求的情况下,Map应尽量使用HashMap,Set应尽量使用HashSet

   3.Collection的学习:

   实例1:

import java.util.*;

public class SimpleCollection{
 
     public static void main(String[] args){
           Collection<Integer> c = new ArrayList<Integer>();
           for(int i = 0;i < 10; i++)
               c.add(i);  //Autoboxing
           for(Integer i: c)
             System.out.println(i +", ");
     }
}

/*
    0,1,2,3,4,5,6,7,8,9,
*/

  实例2:

/*
  如何向Collection添加一组元素
*/
//以下是方法体
Collection<Integer> collection = new ArrayList<Integer>
              (Arrays.asList(1,2,3,4,5)); //Array像Collections一样是工具类
Integer[] moreInt = {6,7,8,9,10};
Collection.addAll(Arrays.asList(moreInt));

Collections.addAll( collection,11,12,13,14);  //Collection对象作参数
Collections.addAll( collection, moreInt);

List<Integer> list = Arrays.asList(16,17,18);
list.set(1,99);
//list.add(21)  //错误,asList产生的List的长度不可变,只能修改元素值

  下一节学习List部分!!

###    学习从来都是一个过程,对对错错对对...若文中有错误,还望读者批评指出      ###

转载于:https://www.cnblogs.com/allenpengyu/p/3452313.html

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_34326429/article/details/94507573
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-06-28 00:36:21
  • 阅读 ( 897 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢