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同城.新浪微博.趣分 ...
随机推荐
- JS 用sort方法排序字符串
JavaScript提供了一种更简便的方法用于比较两个字符串——localeCompare(),localeCompare()使用本地特定的顺序来比较两个字符串,语法如下:string.localeC ...
- 21045308刘昊阳 《Java程序设计》第九周学习总结
21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...
- Codeforces Round #209 (Div. 2) A. Table
#include <iostream> #include <vector> using namespace std; int main(){ int n,m; cin > ...
- [深入浅出Windows 10]布局原理
5.2 布局原理 很多时候在编写程序界面的时候都会忽略了应用布局的重要性,仅仅只是把布局看作是对UI元素的排列,只要能实现布局的效果就可以了,但是在实际的产品开发中这是远远不够的,你可能面临要实现的布 ...
- jquery插件jquery.LightBox.js之点击放大图片并左右点击切换图片(仿相册插件)
该插件乃本博客作者所写,目的在于提升作者的js能力,也给一些js菜鸟在使用插件时提供一些便利,老鸟就悠然地飞过吧. 此插件旨在实现目前较为流行的点击放大图片并左右点击切换图片的效果,您可以根据自己的实 ...
- 李洪强iOS经典面试题128
1.写一个NSString类的实现 + (id)initWithCString:(c*****t char *)nullTerminatedCString encoding:(NSStringEnco ...
- gerrit使用教程
注:使用时把“user”替换为自己的账号,例如 ueapp: ssh://huang.fei@10.0.64.16:29418/jonet2_0_app_ueapp.git 新的环境下需要先注册g ...
- Server Tomcat v7.0 Server at localhost was unable to start within 45 seconds 解决方法
Server Tomcat v6.0 Server at localhost was unable to start within 45 seconds. If the server requires ...
- POJ 1195 二维树状数组
Mobile phones Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 18489 Accepted: 8558 De ...
- Daily Scrum 11.3
今天开发人员的任务都还行,测试的同学要开始辛苦了. 下面是今天的Task统计: