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 集合的基本用法的更多相关文章

  1. java集合的简单用法

    typora-root-url: iamge [TOC] 1.集合接口 1.1将集合的接口与实现分离 ​ 与现代的数据结构类库的常见情况一样,Java集合类库也将接口(interface)与实现(im ...

  2. java集合 stream 相关用法(1)

    java8新增一种流式数据,让操作集合数据更简单方便. 定义基本对象: public class Peo { private String name; private String id; publi ...

  3. 【新手向】如何学习Java集合

    前言 只有光头才能变强. 文本已收录至我的GitHub精选文章,欢迎Star:https://github.com/ZhongFuCheng3y/3y 如果认识我的同学可能就知道,我已经写过很多系列级 ...

  4. Java集合中Set的常见问题及用法

    在这里演示的案例是衔接Java集合中的List(点击查看)那篇博文的,本节我们学习的Set的用法. Set是Collection的一个重要的子接口,Set中的元素是无序排列的,并且元素不可以重复,被称 ...

  5. Java集合框架(一)—— Collection、Iterator和Foreach的用法

    1.Java集合概述 在编程中,常常需要集中存放多个数据.当然我们可以使用数组来保存多个对象.但数组长度不可变化,一旦在初始化时指定了数组长度,则这个数组长度是不可变的,如果需要保存个数变化的数据,数 ...

  6. Java集合中迭代器的常用用法

    该例子展示了一个Java集合中迭代器的常用用法public class LinkedListTest { public static void main(String[] args) { List&l ...

  7. Java 集合框架之set用法

    Java 集合框架之set 一个简单的例子 创建一个Customer类,类中的属性有姓名(name).年龄(age).性别(gender),每个属性分别有get/set 方法.然后创建两个Custom ...

  8. java集合-遍历arraylist-for循环-从指定下标开始遍历-for的用法

    转载:http://www.9191boke.com/blogdetails/681220549.html java集合的for循环遍历有多种方式,但是都是从下标0开始遍历,有时会有从中间下标开始遍历 ...

  9. Java集合专题总结(1):HashMap 和 HashTable 源码学习和面试总结

    2017年的秋招彻底结束了,感觉Java上面的最常见的集合相关的问题就是hash--系列和一些常用并发集合和队列,堆等结合算法一起考察,不完全统计,本人经历:先后百度.唯品会.58同城.新浪微博.趣分 ...

随机推荐

  1. oracle中利用trigger,sequence自动生成ID

    http://zhanghong.iteye.com/blog/865937 1. 首先创建数据库表 SQL> create table customer( 2  id number(8) no ...

  2. NOI OpenJudge 8469 特殊密码锁 Label贪心

    描述 有一种特殊的二进制密码锁,由n个相连的按钮组成(n<30),按钮有凹/凸两种状态,用手按按钮会改变其状态. 然而让人头疼的是,当你按一个按钮时,跟它相邻的两个按钮状态也会反转.当然,如果你 ...

  3. 原生js自动触发事件

    熟悉jquery的童鞋都知道在jq中有一个方法可以自动触发事件,那就是trigger(),那么通过原生js又怎么模拟触发呢? js中添加一个主动触发事件的方法有dispatch.该方法能模拟用户行为, ...

  4. 20161007 NOIP 模拟赛 T1 解题报告

    排序 3.1 题意描述 众所周知,熟练掌握至少一种排序算法是参加NOIP的必备技能.常见的排序算法有冒泡 排序.归并排序.快速排序.奇偶排序.猴子排序.梳排序.鸡尾酒排序.臭皮匠排序等. 在这里,介绍 ...

  5. 【HDU】4418 Time travel

    http://acm.hdu.edu.cn/showproblem.php?pid=4418 题意:一个0-n-1的坐标轴,给出起点X.终点Y,和初始方向D(0表示从左向右.1表示从右向左,-1表示起 ...

  6. linux修改系统编码

    Windows的默认编码为GBK,Linux的默认编码为UTF-8.在Windows下编辑的中文,在Linux下显示为乱码.一种方法是在windows进行转码,比如使用ue工具在文件-->转换 ...

  7. gcc 版本降级

    由于刚刚装了ubuntu 16.04,该版本gcc版本为5.4.0太高,很多软件不支持,所以要降版本,可以直接看(三)解决 一.gcc源代码网站 ftp://mirrors.kernel.org/gn ...

  8. PHP 解决nginx 用file_get_content 问题

    $my_curl = curl_init(); //初始化一个curl对象 curl_setopt($my_curl, CURLOPT_URL, "http://www.webjoy.net ...

  9. 自己签发免费ssl证书

    自己制作ssl证书:自己签发免费ssl证书,为nginx生成自签名ssl证书 这里说下Linux 系统怎么通过openssl命令生成 证书. 首先执行如下命令生成一个keyopenssl genrsa ...

  10. mvn生成runnablejar 的方法

    主要讲3点,生成runnable jar 方法1是生成一个目录 方法2是直接一个runnable的jar 方法3是关于包含spring工程的情况  方法2和3其实是一致的 1.生成runnable j ...