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. 在java.util中有EventListener接口:所有事件监听者都要实现这个接口。

    在java.util中有EventListener接口:所有事件监听者都要实现这个接口. java.util中有EventObject类:所有的事件都为其子类.   事件范例在\CoreJava\Gi ...

  2. vue 使用font-awesome

    1.npm 安装font-awesome 以及需要的所有依赖 npm i --save @fortawesome/fontawesome-svg-core npm i --save @fortawes ...

  3. RecyclerView+SwpieRefreshLayout(转载)

    开源库BaseRecyclerViewAdapterHelperhttp://blog.csdn.net/xiangzhihong8/article/details/52138669http://ww ...

  4. CSS实现自适应九宫格布局 大全

    看到微博和朋友圈都实现了图片九宫格,曾经有次面试也问到了九宫格这个问题,当时想到的是先固定每个单元格的宽高,然后进行浮动.今天想折腾一下,实现自适应父元素宽度的布局.这次我只写了四种方式去实现九宫格, ...

  5. [Golang] lua战斗验证服务器

    我的另外一个开源项目,任何建议.指正错误和优化我都非常欢迎 baibaibai_000@163.com 简介 本项目是用go语言编写,结合cgo功能,支持高并发执行lua脚本的程序. 扩展 可以扩展成 ...

  6. window 控制台解决中文乱码

    console.log 输出中文乱码,怎么解决 是由于DOS窗口显示的编码同logcat日志中不同导致的乱码问题.DOS窗口默认的编码是GBK,而LogCat打印的是UTF-8的编码,所以要设置DOS ...

  7. D5 F

    最近见到了好多跟排列有关的状压dp,好像略微会了一点,用 dp[i][s][j]表示第i位状态为s选择j的方案数,然后递推. 早起大概可以提高人的智商但是会导致人甚至不清,初始化写错了自闭了半个小时 ...

  8. linux的基本操作(磁盘管理)

    磁盘管理 [查看磁盘或者目录的容量 df 和 du] df 查看已挂载磁盘的总容量.使用容量.剩余容量等,可以不加任何参数,默认是按k为单位显示的 df常用参数有 –i -h -k –m等 -i 使用 ...

  9. linux 远程连接ssh提示IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY解决

    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HA ...

  10. 逆向工程之修改关键CALL返回值_破解视频转换专家

    1)注册软件随便输入注册名注册码 2)进入软件根目录,发送到PEID查壳 3)发现无壳 4)发送到OD 4.1)右键菜单选择智能搜索 4.2)找到关键信息点注册 4.3)找到关键信息点双击进入汇编,向 ...