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同城.新浪微博.趣分 ...
随机推荐
- Android控件属性大全(转)
http://blog.csdn.net/pku_android/article/details/7365685 LinearLayout 线性布局 子元素任意: Tab ...
- 如何使用命令行编译以及运行java文件
要想编译和运行java文件,很简单,只需要两个命令: (1) javac:作用:编译java文件:使用方法: javac Hello.java ,如果不出错的话,在与Hello.java 同一目录下会 ...
- 转载:C# this.invoke()作用 多线程操作UI 理解二
Invoke()的作用是:在应用程序的主线程上执行指定的委托.一般应用:在辅助线程中修改UI线程( 主线程 )中对象的属性时,调用this.Invoke(); //测试的窗体 public class ...
- Map 映射
package lis0924; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import j ...
- cookie的设置,获取,取消
<!DOCTYPE> <html> <head> <meta http-equiv=Content-Type content="text/html; ...
- 安装redis和php的redis扩展
一.安装Redis 在服务器上下载好最新的redis解压包后,解压 #tar -zxvf redis-3.2.0-tar-gz #cd redis-3.2.0-tar-gz #make (redis- ...
- .net 的 Url 中文加密
当 Get 的请求参数可能出现中文的时候,那么就需要对其中文进行加密处理: 引用程序集:System.Web 加密方法: HttpUtility.UrlEncode(); 解密方法:HttpUtili ...
- linux查看主机端口进程命令
1.查看主机信息 # more /etc/hosts # Do not remove the following line, or various programs # that require ne ...
- servlet的生命周期与运行时的线程模型
第 14 章 生命周期 注意 讲一下servlet的生命周期与运行时的线程模型,对了解servlet的运行原理有所帮助,这样才能避免一些有冲突的设计. 如果你不满足以下任一条件,请继续阅读,否则请跳过 ...
- lua的table排序
lua中利用到的排序的基本上就是构造函数(table)了,为了便于和C区分开来,我俗称它为表单. 实例:(原理就是LUA集成的冒泡算法) 排序的一般姿势(对于只包含数字或者只包含字符串的简单数组) t ...