Java 集合类框架
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 集合类框架的更多相关文章
- Java集合类框架的基本接口有哪些?
总共有两大接口:Collection 和Map ,一个元素集合,一个是键值对集合: 其中List和Set接口继承了Collection接口,一个是有序元素集合,一个是无序元素集合: 而ArrayLis ...
- java集合类框架的基本接口有哪些
集合类接口指定了一组叫做元素的对象.集合类接口的每一种具体的实现类都可以以他自己的方式对元素进行保存和排序.有的集合允许重复的键,有些不允许. java集合类里面最基本 的接口: Collection ...
- 夯实Java基础系列19:一文搞懂Java集合类框架,以及常见面试题
本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...
- Java集合类框架的最佳实践有哪些
根据应用的需要正确选择要使用的集合的类型对性能非常重要,比如:元素的大小是固定的,而且能事先知道,我们就应该用Array而不是ArrayList. 有些集合类允许指定初始容量.因此,如果我们能估计出存 ...
- Java集合类框架的最佳实践有哪些?
1.根据应用需要正确选择要使用的集合类型对性能非常重要,比如:假如知道元素的大小是固定的,那么选用Array类型而不是ArrayList类型更为合适. 2.有些集合类型允许指定初始容量.因此,如果我们 ...
- Java集合类框架的最佳实践?
根据应用的需要选择合适的集合对性能是非常重要的.如果一个集合的元素数量是固定的,而且我们能够提前知道固定的数量,那么就可以使用数组,而不是ArrayList. 每个集合都可以设置初始容量,如果我们提前 ...
- Java集合框架Collection
转自:http://www.cdtarena.com/javapx/201306/8891.html [plain] view plaincopyprint?01.在 Java2中,有一套设计优良的接 ...
- java 集合类基础问题汇总
1.Java集合类框架的基本接口有哪些? 参考答案 集合类接口指定了一组叫做元素的对象.集合类接口的每一种具体的实现类都可以选择以它自己的方式对元素进行保存和排序.有的集合类允许重复的键,有些不允许 ...
- Java中最常用的集合类框架之 HashMap
一.HashMap的概述 HashMap可以说是Java中最常用的集合类框架之一,是Java语言中非常典型的数据结构. HashMap是基于哈希表的Map接口实现的,此实现提供所有可选的映射 ...
随机推荐
- Direct3D 11 Tutorial 3: Shaders and Effect System_Direct3D 11 教程3:着色器和效果系统
概述 在上一个教程中,我们设置了一个顶点缓冲区并将一个三角形传递给GPU. 现在,我们将逐步完成图形管道并查看每个阶段的工作原理. 将解释着色器和效果系统的概念. 请注意,本教程与前一个源代码共享相同 ...
- R包的小技巧
通常我们都是直接使用library(pkg_name) 的形式加载R包,在同一台机器上面,对于我们而言,这个包所在的路径一定是在.libPaths() 路面的,但是对于其他用户而言,这个路径可能不存 ...
- Oracle集群(RAC)时间同步(ntp和CTSS)
Oracle集群(RAC)时间同步(ntp和CTSS) http://blog.itpub.net/26736162/viewspace-2157130/ crsctl stat res -t -in ...
- Python——rrdtool模块的安装
一.Centos环境yum命令安装 yum install rrdtool rrdtool-devel 二.源码安装 wget https://pypi.python.org/packages/99/ ...
- A - Black Box 优先队列
来源poj1442 Our Black Box represents a primitive database. It can save an integer array and has a spec ...
- laravel5.4将excel表格中的信息导入到数据库中
本功能是借助 Maatwebsite\Excel 这个扩展包完成的,此扩展包的安装过程请参考上篇博文:http://www.cnblogs.com/zhuchenglin/p/7122946.html ...
- 22.1 、react生命周期(一)
在每个react组件中都有以下几个生命周期方法~我们需要在不同阶段进行讨论 组件生命周期概述 1.初始化 在组件初始化阶段会执行 constructor static getDerivedStateF ...
- php验证18位身份证,准到必须输入正确的身份证号,
/** * 验证18位身份证(计算方式在百度百科有) * @param string $id 身份证 * return boolean */ function check_identity($id=' ...
- Intellij IDEA 生成返回值对象快捷键
在编写一行JAVA语句时,有返回值的方法已经决定了返回对象的类型和泛型类型,我们只需要给这个对象起个名字就行. 如果使用快捷键生成这个返回值,我们就可以减少不必要的打字和思考,专注于过程的实现. 步骤 ...
- IDEA 快捷将创建main函数
在编写代码的时候直接输入psv就会看到一个psvm的提示,此时点击tab键一个main方法就写好了. psvm 也就是public static void main的首字母. 依次还有在方法体内键入f ...