1 package test;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.Iterator; import org.junit.Test;
public class TestCollection {
@Test
public void test1(){
Collection<Object> coll = new ArrayList<>();
//1,向定义的集合中添加元素:coll.add();
coll.add("aa");
coll.add(123);
coll.add(new Date());
System.out.println(coll.toString()); //2:向一个集合中加入另一个集合的全部元素:coll1.addAll(coll);
Collection<Object> coll1 = new ArrayList<>();
coll1.add(520);
coll1.add("zhaoning");
coll1.addAll(coll);
System.out.println(coll1.toString()); //3:计算一个集合内有几个元素: coll1.size();
// Collection coll2 = new ArrayList();
// coll2.contains("zhaoning");
int lenght = coll1.size();
System.out.println(lenght); //4:清空集合内部的元素:coll.clear();
coll.clear();
System.out.println(coll.toString());
} @Test
public void test2(){
//5:判断集合是否为空:c1.isEmpty();判断集合c1是否为空,返回值为布尔值,如果为空返回true,不为空则返回false;
Collection<Object> c1 = new ArrayList<>();
boolean i = c1.isEmpty();
System.out.println(i);
c1.add(520);
i = c1.isEmpty();
System.out.println(i); //6:移除集合中某个元素:c1.remove(520);删除c1中 520 元素;
c1.add("zhaoning");
c1.remove(520);
System.out.println(c1.toString()); //7:移除集合中某个元素:c1.removeAll(c2);删除c1中 包含c2集合的全部 元素;
Collection<Object> c2 = new ArrayList<>();
c2.add("zhaoning");
c1.removeAll(c2);
//8:判断集合是否包含某个元素:c2.contains(520);判断集合是否包含元素520,返回值为布尔值,如果包含返回true,否则返回false;
c2.clear();
c2.add("zhaoning");
c2.add(520);
c2.add(1314);
System.out.println(c2.contains(520)); //9:判断一个集合是否包含另一个集合所有元素:c2.containsAll(c1): 判断集合c2是否包含集合c1的全部元素,返回值为布尔值,
// 如果包含返回true,否则返回false;
boolean b = c2.containsAll(c1);
System.out.println(b);
} @Test
public void test3(){
//10:讲一个集合元素数组的形式呈现:c3.
Collection<Object> c3 = new ArrayList<>();
c3.add("zyn");
c3.add("girl");
Date d1 = new Date();
c3.add(d1);
c3.add("girl");
c3.add("zyn");
// Object[] obj = c3.toArray();
// for(int i = 0; i < obj.length; i++){
// System.out.println(obj[i]);
// } //11:迭代器:iterator
Iterator it = c3.iterator();
while(it.hasNext()){
System.out.println(it.next());
} System.out.println(); //12:比较两个集合的元素是否相同:c4.equals(c3) :返回值为布尔值,相同为true,不同为false;
Collection<Object> c4 = new ArrayList<>();
c4.add("zyn");
c4.add("girl");
Date d2 = new Date();
c4.add(d2);
boolean b1 = c4.equals(c3);
it = c4.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
System.out.println(b1);//b1 = false的原因:new 的时间不一样,存在毫秒差距;
System.out.println(d2.getTime() - d1.getTime());
} @Test
public void test4(){
//13:计算一个集合的hash值:c5.hashCode(); 返回值是一个int型值
Collection<Object> c5 = new ArrayList<>();
System.out.println(c5.hashCode());
} @Test
public void test5(){
//来验证两个集合的元素完全相同,但是顺序不同,用equals()比较是否相等:
Collection<Object> cc = new ArrayList<>();
Collection<Object> cd = new ArrayList<>();
//cc.add("zhaoning");
cc.add("zyn");
cc.add("and");
//cc.add("zyn");
cc.add("zhaoning");
cd.add("zyn");
cd.add("and");
cd.add("zhaoning");
System.out.println(cc.equals(cd)); /*
* 总结:两个集合元素相同,但是元素顺序不同,用equals()比较是不相同的;
*/
}
}

对于TreeSet 和TreeMap来说,要想规定向集合中添加同一种元素并且自定义根据元素的某一个属性进行排序,就要继承Comparator类,重写compare()方法;或者是实现Comparable接口,重写compareTo()方法;

package collection;

import java.util.*;

import org.junit.*;
public class TestTreeSet {
@Test
public void test1(){
Set set = new TreeSet();
set.add(new Person("zhaoning",19));
set.add(new Person("zyn",20));
set.add(new Person("Aa",21)); Iterator it = set.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
} @Test
public void test2(){
Comparator<?> com = new Comparator<Object>(){//实现定制排序重写compare()方法: @Override
public int compare(Object o1, Object o2) {
if(o1 instanceof Customer && o2 instanceof Customer){
Customer c1 = (Customer)o1;
Customer c2 = (Customer)o2;
return c1.getId().compareTo(c2.getId());
}
return 0;
}
};
Set set = new TreeSet(com);
set.add(new Customer("zhaoning",00001));
set.add(new Customer("zyn",00002));
set.add(new Customer("Aa",00003)); Iterator it = set.iterator();
while(it .hasNext()){
System.out.println(it.next());
}
}
} package collection; public class Person implements Comparable<Object>{//实现Comparable接口:
private Integer age;
private String name; public Person(){
super();
}
public Person(String name,Integer age){
this.name = name;
this.age = age;
} public String getName(){
return this.name;
} public Integer getAge(){
return this.age;
} @Override
public int compareTo(Object o) {//重写compareTo()方法来自定义利用哪个元素进行排序:
if(o instanceof Person){
Person p = (Person)o;
return this.age.compareTo(p.age);
}
return 0;
} @Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((age == null) ? 0 : age.hashCode());
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Person other = (Person) obj;
if (age == null) {
if (other.age != null)
return false;
} else if (!age.equals(other.age))
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
} public String toString(){
return "Person : [ name:" + this.name + ", age:" + this.age + "]";
}
}

接口Collection: Set 和 List 两个子接口:

      List接口下实现的类有: ArrayList,Vector(老版本),LinkedList;(有序的)

      Set接口下实现的类有:HashSet 和 TreeSet;(无序的)

接口Map: 实现的类有HashMap,LinkedHashMap,TreeMap;

    

Java 集合类框架的更多相关文章

  1. Java集合类框架的基本接口有哪些?

    总共有两大接口:Collection 和Map ,一个元素集合,一个是键值对集合: 其中List和Set接口继承了Collection接口,一个是有序元素集合,一个是无序元素集合: 而ArrayLis ...

  2. java集合类框架的基本接口有哪些

    集合类接口指定了一组叫做元素的对象.集合类接口的每一种具体的实现类都可以以他自己的方式对元素进行保存和排序.有的集合允许重复的键,有些不允许. java集合类里面最基本 的接口: Collection ...

  3. 夯实Java基础系列19:一文搞懂Java集合类框架,以及常见面试题

    本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...

  4. Java集合类框架的最佳实践有哪些

    根据应用的需要正确选择要使用的集合的类型对性能非常重要,比如:元素的大小是固定的,而且能事先知道,我们就应该用Array而不是ArrayList. 有些集合类允许指定初始容量.因此,如果我们能估计出存 ...

  5. Java集合类框架的最佳实践有哪些?

    1.根据应用需要正确选择要使用的集合类型对性能非常重要,比如:假如知道元素的大小是固定的,那么选用Array类型而不是ArrayList类型更为合适. 2.有些集合类型允许指定初始容量.因此,如果我们 ...

  6. Java集合类框架的最佳实践?

    根据应用的需要选择合适的集合对性能是非常重要的.如果一个集合的元素数量是固定的,而且我们能够提前知道固定的数量,那么就可以使用数组,而不是ArrayList. 每个集合都可以设置初始容量,如果我们提前 ...

  7. Java集合框架Collection

    转自:http://www.cdtarena.com/javapx/201306/8891.html [plain] view plaincopyprint?01.在 Java2中,有一套设计优良的接 ...

  8. java 集合类基础问题汇总

     1.Java集合类框架的基本接口有哪些? 参考答案 集合类接口指定了一组叫做元素的对象.集合类接口的每一种具体的实现类都可以选择以它自己的方式对元素进行保存和排序.有的集合类允许重复的键,有些不允许 ...

  9. Java中最常用的集合类框架之 HashMap

    一.HashMap的概述 HashMap可以说是Java中最常用的集合类框架之一,是Java语言中非常典型的数据结构.      HashMap是基于哈希表的Map接口实现的,此实现提供所有可选的映射 ...

随机推荐

  1. [转]Go语言中的make和new

    前言 本文主要给大家介绍了Go语言中函数new与make的使用和区别,关于Go语言中new和make是内建的两个函数,主要用来创建分配类型内存.在我们定义生成变量的时候,可能会觉得有点迷惑,其实他们的 ...

  2. halcon 动态阈值分割之偏移值

  3. DatagramSocket(邮递员):对应数据报的Socket概念,不需要创建两个socket,不可使用输入输出流。

    UDP编程: DatagramSocket(邮递员):对应数据报的Socket概念,不需要创建两个socket,不可使用输入输出流. DatagramPacket(信件):数据包,是UDP下进行传输数 ...

  4. return在try...except...finally...中的表现

    一直以为return就直接退出函数了,最近遇到一情况,在try中return,并没有什么卵用,还是会去执行finally里的内容,导致不能正确返回想要的数据 一直以为return就会跳出函数,发现原来 ...

  5. Jquery EasyUI Combotree和 EasyUI tree展开所有父节点和获取完整路径

    Jquery EasyUI Combotree展开所有父节点 Jquery EasyUI Combotree获取树完整路径 Jquery EasyUI tree展开所有父节点 Jquery EasyU ...

  6. docker 应用-2(Dockerfile 编写以及镜像保存提交)

    我们可以从docker hub上pull别人的镜像,也可以将容器进行修改,然后commit镜像,并把镜像push到docker hub上被被人使用.但是,直接pull或者push镜像的方式太过笨重,尤 ...

  7. python unittest addCleanup中也加失败截图功能

    在python web自动化测试中失败截图方法汇总一文中提到了失败截图的方法 但在实际测试中,如果我们的测试用例中加了addCleanups动作,如果addCleanups中动作失败了,就不会截图.那 ...

  8. nw.js---创建一个hello word的方法

    一.如果用nw.js 来开发桌面应用 首先到Nw.js中文网下载软件: https://nwjs.org.cn/download.html 下载下来进行解压就可以了,绿色的免安装的,整个目录结果是这样 ...

  9. Centos6.8 安装dlib库时出错【升级gcc 到4.9.0以上】

    在centos6.8上安装dlib库时出现错误: 1.CMake must be installed to build the following extensions: dlib 没有安装CMake ...

  10. java开学考试有感以及源码

    一.感想 Java开学测试有感 九月二十号,王老师给我们上的第一节java课,测试. 说实话,不能说是十分有自信,但还好,直到看见了开学测试的题目,之前因为已经做过了王老师发的16级的题目,所以当时还 ...