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接口实现的,此实现提供所有可选的映射 ...
随机推荐
- 基于【CentOS-7+ Ambari 2.7.0 + HDP 3.0】搭建HAWQ数据仓库01 —— 准备环境,搭建本地仓库,安装ambari
一.集群软硬件环境准备: 操作系统: centos 7 x86_64.1804 Ambari版本:2.7.0 HDP版本:3.0.0 HAWQ版本:2.3.05台PC作为工作站: ep-bd01 e ...
- 24小时学通Linux内核之电源开和关时都发生了什么
说实话感觉自己快写不下去了,其一是有些勉强跟不上来,其二是感觉自己越写越差,刚开始可能是新鲜感以及很多读者的鼓励,现在就是想快点完成自己制定的任务,不过总有几个读者给自己鼓励,很欣慰的事情,不多感慨了 ...
- eclipse 查看变量或方法在什么地方被调用的快捷键和快速显示方法入参提示信息
为了用eclipse写代码的时候,不用方向键移动光标,可以设置如下快捷键, Line Up:Alt+i 光标向上 Line Down:Alt+k 光标向下 Line Start:Alt+u 移到 ...
- TIJ -- 任务间使用管道进行输入/输出
1. 通过输入/输出在线程间进行通信通常很有用.提供线程功能的类库以“管道”的形式对线程间的输入/输出提供了支持.它们在Java输入/输出类库中的对应物就是PipedWriter类(允许任务向管道写) ...
- IP地址在mysql的存储(IP地址和int的转换)
PHP echo ip2long('192.168.1.38'); 输出:3232235814 MYSQL SELECT INET_ATON('192.168.1.38'); 输出:323223581 ...
- Java不区分大小写的CaseInsensitiveMap
Java中对于键值对,我们习惯使用类HashMap,使用方式:Map<String, String> result=new HashMap<String,String>(); ...
- TypeSrcript如何引入第三方库 如果加d.ts以及async await如何使用 demo,只有代码,文字后续补充
https://files.cnblogs.com/files/cappuccino/laya2.rar
- mysql中的事物处理
首先,事物的概念,保证一组sql语句操作的完整性,在这个过程中要充分考虑到多用户同时访问数据库数据的情况. 关键词有COMMIT,ROLLBACK,,START TRANSACTION
- 求问ps如何导出单个切片及PS导出所有的切片图像
在ps里面对图片进行切片,并根据需要弄好切片,利用shift键,可以选择其中部分的切片: 弄好以后,点击“文件”,选择“存储为WEB和设备所用格式”:. 在打开的“存储为WEB和设备所用格式”界面上点 ...
- [Codeforces Round #221 (Div. 1)][D. Tree and Queries]
题目链接:375D - Tree and Queries 题目大意:给你一个有n个点的树,每个点都有其对应的颜色,给出m次询问(v,k),问v的子树中有多少种颜色至少出现k次 题解:先对所有的询问进行 ...