- 浏览: 731059 次
- 性别:
- 来自: 天津
-
文章分类
- 全部博客 (442)
- 中间件 (20)
- hibernate (13)
- spring (20)
- 数据库 (78)
- struts (8)
- ibatis (4)
- 前端 (61)
- linux,windows (21)
- it大环境 (32)
- IDE工具 (36)
- 感悟 (6)
- java基础 (40)
- 经典面试题 (10)
- exception总结 (14)
- 软件设计 (8)
- 工具类应用及新技术 (48)
- php (2)
- 微信 (1)
- 设计模式 (2)
- 重构 (3)
- 管理 (2)
- 工作笔记 (1)
- jmx (1)
- 算法 (4)
- 多线程同步 (2)
- 代码管理工具 (5)
- 代码检测及测试 (2)
- 缓存服务 (1)
- SOA及ROA (5)
- groovy (1)
- 网络编程 (2)
- 大数据 (6)
最新评论
-
love398146779:
我当然不能全写上面了,这只是其中一部分https连接。
java 建立 https连接 -
yuenkin:
大哥,这是双向认证吗?
java 建立 https连接 -
issu:
例如以下代码能遍历字符串"Tom:M ...
<c:forTokens>标签delims截取字符 -
love398146779:
2*3*5=30,是30个以上的请求才拒绝呀。
tomcat的maxThreads、acceptCount(最大线程数、最大排队数) -
love398146779:
2台跟1台一样的效果。
zookeeper与activemq最新存储replicatedLevelDB整合
数组转Collection
使用Apache Jakarta Commons Collections:
import org.apache.commons.collections.CollectionUtils;
String[] strArray = {"aaa", "bbb", "ccc"};
List strList = new ArrayList();
Set strSet = new HashSet();
CollectionUtils.addAll(strList, strArray);
CollectionUtils.addAll(strSet, strArray);
CollectionUtils.addAll()方法的实现很简单,只是循环使用了Collection的add()方法而已。
如果只是想将数组转换成List,可以用JDK中的java.util.Arrays类:
import java.util.Arrays;
String[] strArray = {"aaa", "bbb", "ccc"};
List strList = Arrays.asList(strArray);
不过Arrays.asList()方法返回的List不能add对象,因为该方法的实现是使用参数引用的数组的大小来new的一个ArrayList。
★ Collection转数组
直接使用Collection的toArray()方法,该方法有两个重载版本:
Object[] toArray();
T[] toArray(T[] a);
★ Map转Collection
直接使用Map的values()方法。
★ List和Set转换
List list = new ArrayList(new Hashset());// Fixed-size list
List list = Arrays.asList(array);// Growable
list list = new LinkedList(Arrays.asList(array));// Duplicate elements are discarded
Set set = new HashSet(Arrays.asList(array));
//=============================================================//
---------------------------------------------------------------
List list = new ArrayList(new Hashset());
Set set = new HashSet(list);
---------------------------------------------------------------
// Fixed-size list
List list = Arrays.asList(array);
// Growable list
list = new LinkedList(Arrays.asList(array));
// Duplicate elements are discarded
Set set = new HashSet(Arrays.asList(array));
//========================================================//
import java.util.*;
public class test3 {
public test3() {
}
public static void main(String[] args){
String xx = new String("1");
String yy = new String("2");
List list = new ArrayList();
list.add(xx);
Set set = new HashSet(list);
System.out.println(set.contains(xx));
System.out.println(set.contains(yy));
}
}
——————————————————————————————————
true
false
//================================================================//
解释一下
Object的hashCode返回值基本上是对象的内存地址
Object的equals方法判断两个Object对象是否“相等”的依据其实是两个对象是否“相同”
所以,如果obj1 和 obj2 都是Object实例,那么 obj1.equals(obj2) 和 obj1 == obj2 是等价的
equals和hashCode这两个方法的关系是:
如果两个对象equals返回true,那么它们的hashCode必须返回相同的integer值。反之,则不做要求,但建议是:如果它们返回相同的hashCode,那么equals应该返回true。
因为上面的原因,如果某个类覆盖了Object的equals方法,那它就必须覆盖hashCode方法,以满足上述要求。
对于自己定义的类,是否要覆盖这些方法,完全取决于自己的需要,如果需要放宽两个对象相等的条件,就需要覆盖。如果不需要,就用Object的实现好了,完全没有问题。
例如,对于Integer类,它需要将两个Integer相等的条件放宽到只要它们包含的数值相等,两个对象就相等,它就会覆盖equals方法,同时,它必须覆盖hashCode方法,返回值很简单,就是它包含的整型值。
再例如,Thread类就没有覆盖这两个方法,它作为Object的直接继承,写Thread类的人认为继承使用Ojbect的这两个方法是合适的,他就不会去覆盖。
使用Apache Jakarta Commons Collections:
import org.apache.commons.collections.CollectionUtils;
String[] strArray = {"aaa", "bbb", "ccc"};
List strList = new ArrayList();
Set strSet = new HashSet();
CollectionUtils.addAll(strList, strArray);
CollectionUtils.addAll(strSet, strArray);
CollectionUtils.addAll()方法的实现很简单,只是循环使用了Collection的add()方法而已。
如果只是想将数组转换成List,可以用JDK中的java.util.Arrays类:
import java.util.Arrays;
String[] strArray = {"aaa", "bbb", "ccc"};
List strList = Arrays.asList(strArray);
不过Arrays.asList()方法返回的List不能add对象,因为该方法的实现是使用参数引用的数组的大小来new的一个ArrayList。
★ Collection转数组
直接使用Collection的toArray()方法,该方法有两个重载版本:
Object[] toArray();
T[] toArray(T[] a);
★ Map转Collection
直接使用Map的values()方法。
★ List和Set转换
List list = new ArrayList(new Hashset());// Fixed-size list
List list = Arrays.asList(array);// Growable
list list = new LinkedList(Arrays.asList(array));// Duplicate elements are discarded
Set set = new HashSet(Arrays.asList(array));
//=============================================================//
---------------------------------------------------------------
List list = new ArrayList(new Hashset());
Set set = new HashSet(list);
---------------------------------------------------------------
// Fixed-size list
List list = Arrays.asList(array);
// Growable list
list = new LinkedList(Arrays.asList(array));
// Duplicate elements are discarded
Set set = new HashSet(Arrays.asList(array));
//========================================================//
import java.util.*;
public class test3 {
public test3() {
}
public static void main(String[] args){
String xx = new String("1");
String yy = new String("2");
List list = new ArrayList();
list.add(xx);
Set set = new HashSet(list);
System.out.println(set.contains(xx));
System.out.println(set.contains(yy));
}
}
——————————————————————————————————
true
false
//================================================================//
解释一下
Object的hashCode返回值基本上是对象的内存地址
Object的equals方法判断两个Object对象是否“相等”的依据其实是两个对象是否“相同”
所以,如果obj1 和 obj2 都是Object实例,那么 obj1.equals(obj2) 和 obj1 == obj2 是等价的
equals和hashCode这两个方法的关系是:
如果两个对象equals返回true,那么它们的hashCode必须返回相同的integer值。反之,则不做要求,但建议是:如果它们返回相同的hashCode,那么equals应该返回true。
因为上面的原因,如果某个类覆盖了Object的equals方法,那它就必须覆盖hashCode方法,以满足上述要求。
对于自己定义的类,是否要覆盖这些方法,完全取决于自己的需要,如果需要放宽两个对象相等的条件,就需要覆盖。如果不需要,就用Object的实现好了,完全没有问题。
例如,对于Integer类,它需要将两个Integer相等的条件放宽到只要它们包含的数值相等,两个对象就相等,它就会覆盖equals方法,同时,它必须覆盖hashCode方法,返回值很简单,就是它包含的整型值。
再例如,Thread类就没有覆盖这两个方法,它作为Object的直接继承,写Thread类的人认为继承使用Ojbect的这两个方法是合适的,他就不会去覆盖。
发表评论
-
eclipse 下找不到或无法加载主类的解决办法
2016-07-25 15:31 858有时候 Eclipse 会发神经,好端端的 project 就 ... -
maven项目,找不到resource下边的文件
2016-07-14 09:49 1457备忘: maven项目,找不到resource下边的文件,在p ... -
不同map对象的list排序
2015-05-21 13:57 535//对频道进行排序 class ComparatorChan ... -
http协议中:GET/POST/PUT/DELETE/INPUT/TRACE/OPTIONS/HEAD方法
2014-10-20 10:53 1704HTTP/1.1协议中共定义了八种方法(有时也叫“动作”)来表 ... -
一致性哈希算法原理 .
2014-08-01 19:53 573http://baike.baidu.com/view/158 ... -
Http Get Post put delete
2014-07-31 19:54 639HTTP POST GET 本质区别详解 一 原理区别 ... -
汉字占位
2014-07-16 15:21 1319GBK编码,一个汉字占两个字节。 UTF-16编码,通常汉 ... -
Java中的换行符line.separator及file的separator
2014-07-16 15:17 1574在不同的平台上,换行符可能是不同的,例如: Mac平台:\r ... -
addShutdownHook的用处
2014-07-16 11:16 437Runtime.getRuntime().addShutdow ... -
java对注解的反射
2013-09-04 20:12 824import java.lang.annotation.Ret ... -
有关http Keep-Alive 的详细解释
2013-05-10 08:46 1305Keep-Alive通俗地讲,就是所谓的持久连接,对于http ... -
浅复制和深度复制 clone()Thinking in java
2013-04-12 16:24 895Java语言的一个优点就是取消了指针的概念,但也导致了许多程序 ... -
emf格式图片,费了3天时间
2012-11-13 16:43 1981public static byte[] createEmfT ... -
java对list的泛型,非严格检查
2012-10-15 14:45 928public class Student { String ... -
长连接
2012-09-17 19:50 1032前提qq登录然后断网。 为什么能一连上互联网,就自动登录。 答 ... -
buffer缓冲区
2012-08-30 17:18 2084当用到二进制传输的时候,一定会用bytebuffer这个类,它 ... -
各种uuid的截取
2012-08-09 13:52 2844import java.util.ArrayList; ... -
string撑爆内存
2012-07-19 15:45 0String hello="Hello&quo ... -
用个中间变量转换,不错的思想
2012-07-06 10:13 820public void setRecks(List trade ... -
java内醒
2012-06-29 14:26 1017经过多方面的资料搜集整理,写下了这篇文章,本文主要讲解java ...
相关推荐
2. **List与Set的转换** - **List转Set**: List可以很容易地转换为Set,因为Set不允许有重复元素。使用`HashSet`构造函数即可实现转换: ```java List<String> list = ...; Set<String> set = new HashSet(list...
Java相关 public static void main(String[] args) { User u1=new User(1, "zhangsan"); User u2=new User(2, ... Set userset=new HashSet(); userset.add(u1); userset.add(u2); userset.add(u3);
这个操作不会丢失任何数据,但需要注意的是,`Set`本身是无序的,所以转换后的`List`中的元素顺序可能与原`Set`中的不同。 **示例代码:** ```java import java.util.ArrayList; import java.util.HashSet; import...
本文将重点关注Set的用法及其与List的区别。 首先,让我们理解Set的基本概念。Set是一个不允许有重复元素的集合,它遵循唯一性原则。在Set接口下有许多实现类,如HashSet、TreeSet和LinkedHashSet等。我们以`...
javascript array list into setjavascript array list into setjavascript array list into setjavascript array list into setjavascript array list into setjavascript array list into setjavascript array ...
测试报告与总结\list,set,map,数组间的相互转换.rar测试报告与总结\list,set,map,数组间的相互转换.rar测试报告与总结\list,set,map,数组间的相互转换.rar测试报告与总结\list,set,map,数组间的相互转换.rar
在Java编程语言中,集合(Collections)是存储和操作对象的主要数据结构,其中包括两种常见的类型:List和Set。本文将深入探讨List和Set在使用`retainAll`方法时的效率差异,并通过`ListAndRetainAll.java`和`...
在处理这种关系时,我们通常会使用`Set`或`List`作为关联集合的容器。本篇文章将深入探讨`Hibernate`中一对多关系使用`Set`和`List`的区别以及它们的实现方式。 首先,我们要理解`Set`和`List`在Java集合框架中的...
### set、list、map的区别与联系 #### 一、概述 在Java编程语言中,`set`、`list`和`map`是非常重要的数据结构,它们分别代表了不同的集合类型,各自有着独特的特性与用途。 - **List**:有序集合,可以包含重复...
// java中对象容器主要有Set,List和Map三个接口类。 // 迭代器(Iterator)模式,又叫做游标(Cursor)模式。 // GOF给出的定义为:提供一种方法访问一个容器(container)对象中的各个元素, // 而又不需暴露该...
Set接口提供了与Collection相同的方法,但不允许添加重复元素。 ##### 5.2 实现原理 常见的Set实现包括: - **HashSet**:基于HashMap实现,不保证元素的顺序。 - **TreeSet**:基于TreeMap实现,可以保证元素的...
### Java集合Collection、List、Set、Map使用详解 #### 1. 集合框架概述 集合框架是Java编程语言中最基本且最重要的组成部分之一。它提供了处理数据集合的强大工具,这些工具不仅支持基本操作(如添加、删除和查找...
在Java编程语言中,集合框架是处理对象的重要工具,其中包括Set、List和Map三大接口。这些接口提供了多种数据结构和操作方法,使得开发者能够高效地组织和管理数据。 1. **Set接口**: Set接口表示一个不包含重复...
以下是一些python的list和set的基本操作 1. list的一些操作 list = [1, 2, 3] list.append(5) print(list) list.extend([7, 8]) # extend是将可迭代对象的元素依次加入列表 print(list) list.append([7, 8]) # ...
将数组转换为List 将List转换为数组 将数组转换为Dictionary 将Dictionary 转换为数组 将List转换为Dictionary 将Dictionary转换为List 首先这里定义了一个“Student”的类,它有三个自动实现属性。 class ...
Java 中 List、Array、Map、Set 等集合相互转换 在 Java 中,集合类型的转换是非常常见的操作,例如将 List 转换为 Array、将 Array 转换为 List、将 Map 转换为 List 等等。今天,我们将详细介绍 Java 中 List、...
Java 集合框架中 List、Set、Map 的用法和区别 Java 集合框架(Java Collections Framework)是 Java 语言中的一个重要组件,提供了一些基本的数据结构和算法来操作和存储数据。其中,List、Set、Map 是三个非常...
List转Set主要通过构造一个新的HashSet并传入List对象来实现。Set集合不允许有重复元素,所以转换过程中会自动去重。例如: ```java List<String> list = new ArrayList(); // 添加元素到list Set<String> set ...
1. **List转Set** 要将一个List转换为Set,可以使用HashSet的构造函数,它接受一个Collection作为参数。例如: ```java List<String> list = new ArrayList(); // 添加元素到list Set<String> set = new ...
### Java应用:两种Java容器类List和Set分析 #### 一、概述 在Java编程语言中,集合框架(Collections Framework)是处理数据的核心组件之一,它提供了存储和操作对象的各种方式。本文将深入探讨Java中的两种重要...