Java 集合的基本用法
package jaxpsax; import java.util.Comparator;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet; import org.junit.Test; public class Testf {
@Test
public void testSet() {
// 创建集合
Set set = new HashSet<>();
//添加不同的对象
set.add(23);
set.add(23);
set.add(new String("cc"));
set.add(new String("cc"));
set.add("cc");
set.add(new Person("lf", 20));
set.add(new Person("lf", 20));
//遍历
for (Object object : set) {
System.out.println(object);
}
//删除对象
set.remove(23);
//使用迭代器遍历
Iterator it = set.iterator();
while (it.hasNext()) {
Object object = (Object) it.next();
System.out.println(object);
} } @Test
public void testCompare() { /*// 指定排序方法
Set<Person> set = new TreeSet<>(new Comparator<Object>() { @Override
public int compare(Object o1, Object o2) {
if (o1 instanceof Person && o2 instanceof Person) {
Person p1 =(Person)o1;
Person p2 =(Person)o2;
return (p1.getName().hashCode()-p2.getName().hashCode()*(p1.getAge()-p2.getAge()));
}
return 0;
}
});*/
//创建TreeSet 注意:如果Person类没有实现compareTo会出现类冲突异常
Set<Person> set = new TreeSet<Person>();
// 添加数据
set.add(new Person("lt", 1));
set.add(new Person("lt", 65));
set.add(new Person("lh", 65));
set.add(new Person("ff", 3));
System.out.println(set); } }
package jaxpsax;
public class Person implements Comparable{
//属性
private String name;
private int age;
// set和get方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
// 无参构造方法
public Person() {
this(null, 0);
}
// 有参构造方法
public Person(String name,int age) {
// this.name = name;
// this.age = age;
setName(name);
setAge(age);
}
// 私有的方法
public void learnSomething() {
System.out.println("每个人都具有学习能力");
}
// 重写toString方法
@Override
public String toString() {
return "name:"+name+" "+"age:"+age;
}
// 重写equals方法
@Override
public boolean equals(Object obj) {
// 判断是否为空
if (obj == null){
return false;
}
// 判断是否是同一对象应用
if (this == obj){
return true;
}
// 判断是否是该类的一个实例
if (!(obj instanceof Person)) {
return false;
}
Person p = (Person)obj;
//比较内容是否相等
return p.name.equals(name)&&p.age==age;
}
// 重写hashCode方法(注意hashCode和equals方法中所用的属性必须一致)
@Override
public int hashCode() {
return name.hashCode()-age;
}
//实现compareTo方法
@Override
public int compareTo(Object o) {
return name.hashCode()-age;
}
}
Java 集合的基本用法的更多相关文章
- java集合的简单用法
typora-root-url: iamge [TOC] 1.集合接口 1.1将集合的接口与实现分离 与现代的数据结构类库的常见情况一样,Java集合类库也将接口(interface)与实现(im ...
- java集合 stream 相关用法(1)
java8新增一种流式数据,让操作集合数据更简单方便. 定义基本对象: public class Peo { private String name; private String id; publi ...
- 【新手向】如何学习Java集合
前言 只有光头才能变强. 文本已收录至我的GitHub精选文章,欢迎Star:https://github.com/ZhongFuCheng3y/3y 如果认识我的同学可能就知道,我已经写过很多系列级 ...
- Java集合中Set的常见问题及用法
在这里演示的案例是衔接Java集合中的List(点击查看)那篇博文的,本节我们学习的Set的用法. Set是Collection的一个重要的子接口,Set中的元素是无序排列的,并且元素不可以重复,被称 ...
- Java集合框架(一)—— Collection、Iterator和Foreach的用法
1.Java集合概述 在编程中,常常需要集中存放多个数据.当然我们可以使用数组来保存多个对象.但数组长度不可变化,一旦在初始化时指定了数组长度,则这个数组长度是不可变的,如果需要保存个数变化的数据,数 ...
- Java集合中迭代器的常用用法
该例子展示了一个Java集合中迭代器的常用用法public class LinkedListTest { public static void main(String[] args) { List&l ...
- Java 集合框架之set用法
Java 集合框架之set 一个简单的例子 创建一个Customer类,类中的属性有姓名(name).年龄(age).性别(gender),每个属性分别有get/set 方法.然后创建两个Custom ...
- java集合-遍历arraylist-for循环-从指定下标开始遍历-for的用法
转载:http://www.9191boke.com/blogdetails/681220549.html java集合的for循环遍历有多种方式,但是都是从下标0开始遍历,有时会有从中间下标开始遍历 ...
- Java集合专题总结(1):HashMap 和 HashTable 源码学习和面试总结
2017年的秋招彻底结束了,感觉Java上面的最常见的集合相关的问题就是hash--系列和一些常用并发集合和队列,堆等结合算法一起考察,不完全统计,本人经历:先后百度.唯品会.58同城.新浪微博.趣分 ...
随机推荐
- 【BZOJ】1086: [SCOI2005]王室联邦
http://www.lydsy.com/JudgeOnline/problem.php?id=1086 题意:n个点的树,要求分块,使得每一块的大小在[b, 3b]内且块与某个点形成的块是连通的(某 ...
- 【HDU】2147 kiki's game
http://acm.hdu.edu.cn/showproblem.php?pid=2147 题意:n×m的棋盘,每次可以向左走.向下走.向左下走,初始在(1, m),n,m<=2000,问先手 ...
- Oracle 游标使用全解(转)
-- 声明游标:CURSOR cursor_name IS select_statement --For 循环游标 --(1)定义游标 --(2)定义游标变量 --(3)使用for循环来使用这个游标 ...
- 20145330《Java程序设计》第五次实验报告
20145330<Java程序设计>第五次实验报告 实验五 Java网络编程及安全 实验内容 1.掌握Socket程序的编写: 2.掌握密码技术的使用: 3.设计安全传输系统 4.结队伙伴 ...
- Cloudera Manager 5和CDH5离线安装
CDH (Cloudera’s Distribution, including Apache Hadoop),是Hadoop众多分支中的一种,由Cloudera维护,基于稳定版本的Apache Had ...
- 28个MongoDB 的问题
MongoDB是目前最好的面向文档的免费开源NoSQL数据库.如果你正准备参加MongoDB NoSQL数据库的技术面试,你最好看看下面的MongoDB NoSQL面试问答.这些MongoDB NoS ...
- memcache 缓存失效问题(转)
在大并发的场合,当cache失效时,大量并发同时取不到cache,会同一瞬间去访问db并回设cache,可能会给系统带来潜在的超负荷风险. 解决方法 方法一 在load db之前先add一个mutex ...
- eclipse配置PHP开发环境
下载 http://www.oracle.com/technetwork/java/javase/downloads/index.html下载JDK,Eclipse 安装需要JDK环境:http:// ...
- Update UI from an asynchronous thread
One of the most common tasks you need to perform in a Windows Phone application is updating the UI f ...
- Crossing River
Crossing River 题目链接:http://acm.hust.edu.cn/vjudge/problem/visitOriginUrl.action?id=26251 题意: N个人希望去过 ...