- 浏览: 76721 次
- 性别:
- 来自: 北京
最新评论
-
daisy8564:
diyunpeng 写道呵呵,09年刚工作,结果看见了你的博客 ...
一些基础算法 -
diyunpeng:
呵呵,09年刚工作,结果看见了你的博客,转眼3年
一些基础算法 -
北冥泪:
楼主,有答案吗?新手想学习下。
非常经典的JAVA编程题全集 -
mn769521:
非常经典的JAVA编程题全集 -
wallimn:
不错,我转一下。有些情况是感同身受的。
[转]程序员那些悲催的事儿
import java.math.*; import java.util.*; public class TestInteger { private static ArrayList al = new ArrayList(); private static HashSet hs = new HashSet(); public static void main( String[] args ) { // int i = Integer.valueOf( 200 ); // BigInteger bi = new BigInteger(null, i); // BigInteger j = bi.add( new BigInteger(null , i) ); // System.out.println( j ); // testVector(); // testArrayListSort(); testArrayListRemove(); } public static void testArrayListSort() { // al.add( new String("first datum") ); al.add( new User( 13 , "Tom")); al.add( new User( 16 , "Lucy" ) ); al.add( new User( 12 , "Gorige") ); Collections.sort( al ); System.out.println(al); } public static void testArrayListRemove() { al.add( new Company( "Tom" )); al.add( new Company( "Lucy" ) ); al.add( new Company( "Gorige" ) ); //为Company重写equals方法,才能实现删除 // al.remove( new Company( "Tom" ) ); Iterator it = al.iterator(); Company c; while ( it.hasNext() ) { // System.out.println( it.next() ); c = (Company)it.next(); if ( c.equals( new Company( "Tom" )) ) { it.remove(); } } System.out.println(al); } public static void testVector() { Vector v = new Vector(); v.add( new String("sdfsdf") ); VectorSon vs1 = new VectorSon(); ArrayListSon al1 = new ArrayListSon(); al1.add( "abcdefghijk" ); vs1.add( "123123" ); v.addAll( vs1 ); v.addAll( al1 ); // System.out.println(v); Iterator it = v.iterator(); while ( it.hasNext() ) { System.out.println( it.next() ); } } } class User implements Comparable { private int age; private String name; public User( int iAge , String sName ) { age = iAge; name = sName; } public String toString() { return "This is"+name+",age is"+age; } public boolean equals( Object o ) { if ( o instanceof User ) { User u = (User)o; if ( u.age == this.age && u.name.equals( this.name ) ) return true; } return false; } public int compareTo( Object o ) { User u = (User)o; int i = this.age - u.age; return i !=0 ? i : this.name.compareTo( u.name ); } } class Company { private String employee; public Company( String ep ) { employee = ep; } public String toString() { return employee; } public boolean equals( Object o ) { if ( o instanceof Company ) { Company c = (Company)o; if ( c.employee.equals( this.employee ) ) return true; } return false; } } import java.util.*; @SuppressWarnings("unchecked") public class TestSort { private static HashSet hs = new HashSet(); private static LinkedList ll = new LinkedList(); private static HashMap hm = new HashMap(); //Set由于存储无序,所以不能排序 public static void testHashSetSort() { hs.add( new Point( 1,2 ) ); hs.add( new Point( 4,5 ) ); hs.add( "91010sdfsf" ); System.out.println( hs ); } //Map尽管他有键来查找,但由于存储无序,所以也不能排序 public static void testHashMapSort() { hm.put( new Point( 1,2 ) , "abc" ); hm.put( new Point( 4,5 ) , "cde" ); System.out.println( hm ); } //list public static void testLinkedListSort() { ll.add( new Point( 41,15 ) ); ll.add( new Point( 21,12 ) ); ll.add( new Point( 54,5 ) ); ll.add( new Point( 10,12 ) ); Collections.sort( ll ); System.out.println( ll ); } public static void main( String[] args ) { // testHashSetSort(); // testHashMapSort(); testLinkedListSort(); } } class Point implements Comparable { private int x,y; public Point( int _x , int _y ) { x = _x; y = _y; } public String toString() { return "x="+x+",y="+y; } public int compareTo( Object o ) { Point p = (Point)o; int i = this.x - p.x; int j = this.y - p.y; return i != 0 ? i : j; } }
1。只有实现了Collection的类才有iterator方法。所以Map没有
2。当使用无序的Set时候,如果只用默认的remove删除元素,必须要重写equals和hashCode方法。
3。使用有序的list时候,无需重写hashCode方法,但仍然要重写equals方法。
4。Map依靠key来查找value,根据key来remove时如果key为对象就必须要重写hashCode方法和equals方法。
5。Set和Map是不能排序的,因为它的存储是无序的,list是可以的,因为它是有序的,list如果元素是对象,要对其排序需要实现Comparable接口和其中的方法compareTo,如果要排序的话,list中元素类型必须一致,否则执行时异常,不排序不一致没关系。
发表评论
-
[转]ubuntu下eclipse的svn插件使用javahl
2011-10-31 11:59 821ubuntu下eclipse安装subclipse之后使用ja ... -
搜集笔试题
2010-07-02 14:44 8491.JSP内置对象及其作用(p ... -
不重复数(一道编程题)
2010-05-20 15:25 928Problem Statement: 如果一个数字十进制表达时 ... -
【转】非常好用的SQL语句优化34条
2010-05-11 17:27 9141)选择最有效率的表名顺序(只在基于规则的优化器中有效): ... -
Jasper Report i18n 法语Number pattern的问题
2010-05-11 11:22 1427把JasperReport的模板改成支持多语言以后,出现一个问 ... -
Jasper Report i18n
2010-05-10 12:18 1703先在iReport中设置Report Properties设置 ... -
Tomcat配置带webapp的JAVA Project
2010-05-04 16:29 1075在tomcat的server.xml的Host里加下面这行 & ... -
Jasper Report 使用总结
2010-04-30 14:41 0这两天在公司要用Jasper Report做一个报表的任务。经 ... -
Google App Engine使用心得
2010-04-08 16:02 1159昨天在Google App Engine搭建了一个自己的应用。 ... -
jsp页面编码问题
2010-01-14 16:12 856今天把一个纯html的源码放在编码为utf-8的index.j ... -
[转]hibernate 二级缓存设置
2010-01-13 09:17 724二级缓存配置: ... -
一些重要链接
2009-11-30 12:16 682Flex与Java EE应用程序结合 http://webse ... -
关于Java23种设计模式的有趣见解
2009-10-24 19:11 716创建型模式 1、FACTORY—追MM少不了请吃饭了,麦 ... -
简单分词算法(二分法,java实现)
2009-09-09 13:07 1860package com.searchkiller; ... -
java字符串编程题
2009-09-09 08:39 3192import java.util.HashMap; im ... -
java内存分配问题
2009-09-07 08:37 1011Java把内存划分成两种: ... -
java运行速度比C++慢的原因
2009-09-07 08:23 27141)java是解释性语言,java程序在运行时类加载器从类路经 ... -
import static和import的区别
2009-08-26 08:51 2360import static静态导入是JDK1.5中的新特性。一 ... -
solr和tomcat配置总结
2009-08-24 14:24 10301.下载tomcat解压到D:\dev\solrTomcat, ... -
面试感想
2009-08-09 06:26 1101前两天去面试了,生生地被问了一个半小时的技术题,NND,没这么 ...
相关推荐
HashSet是哈希表实现的,equals返回true,hashCode返回相同的整数。SortedSet是Set的子接口,对Set排序实现类是TreeSet,使用二叉树实现的。 Map集合是一种键值对集合,key不能重复,但是value可以重复。Map集合的...
Java中的集合类是编程中不可或缺的部分,它们提供了一种组织和管理对象的方式。在这个总结中,我们将深入探讨Java集合框架中的主要组件,包括ArrayList、LinkedList、HashSet、HashMap等,并了解如何进行基本操作如...
在Java编程语言中,集合框架是处理对象组的重要工具,其中`Collection`接口是所有集合类的根接口。集合是用来存储一组不唯一、无序的对象,而`List`和`Set`是由`Collection`派生的两个主要接口。在描述中提到了`Set`...
### JAVA基础-集合类 #### 一、集合的概述与分类 ##### 1. 集合概述 集合是Java编程语言中一种重要的数据结构,它用于存储一系列的对象。与数组相比,集合提供了更加灵活的方式来处理数据。集合的一个显著特点是它...
Collection 是 List 和 Set 的父接口,在 Collection 中定义了一些主要方法,例如 add、addAll、clear、contains、containsAll、equals、hashCode、isEmpty、iterator、remove、removeAll 和 retainAll 等。...
Java集合排序及java集合类详解 Java集合框架是Java编程语言中极其重要的一部分,它提供了存储和操作数据的高效方式。本文将深入探讨Java集合框架的四大核心组件:`Collection`、`List`、`Map`和`Set`,以及它们的...
* Iterator、equals、hashCode、Comparable 和 Comparator 等集合操作 五、Java 标准库 * String 和 StringBuffer 类 * java.util.Date 和 SimpleDateFormat 类 * Regex 正则表达式和 Pattern 类 六、反射机制 *...
- **HashSet**:使用哈希表实现,通过`hashCode()`和`equals()`方法来判断元素的相等性。 - **TreeSet**:实现了`SortedSet`接口,能够根据元素的自然顺序或者自定义比较器进行排序,内部使用红黑树结构实现。 ##...
本资源摘要信息涵盖了 Java 中的集合框架,包括 TreeSet、List、Set、Map 等集合类的使用和特性。同时,涵盖了 Lambda 表达式、Stream 接口、 Iterator 等概念。 1. 在创建 TreeSet 对象时,可以传入自定义比较器,...
- **覆写hashCode()**:为了确保键的唯一性,当使用自定义对象作为键时,需要重写equals()和hashCode()方法。 5. **Set** - Set接口不包含重复元素,且不保证元素顺序。 - **实现原理**:HashSet是最常见的Set...
Java集合框架是Java编程语言中一...以上内容只是Java集合框架的一部分,实际上还有更多高级特性和使用技巧,如迭代器(Iterator)、并发集合(Concurrent Collections)、流(Stream)等,需要在实践中不断学习和掌握。
一般情况下,如果自定义的类会产生很多对象,比如人,学生,书,通常都需要覆盖equals,hashCode方法。 建立对象判断是否相同的依据。 import java.util.HashSet; import java.util.Iterator; import java.util....
8. **HashSet与TreeSet**:HashSet存储元素时,元素必须重写equals()和hashCode()方法以确保唯一性。而TreeSet则要求元素实现Comparable接口或传入Comparator比较器,用于元素的排序。 **双列集合 Map** 9. **Map...
Collection接口提供了一系列通用方法,如contains()(判断是否包含指定元素)、clear()(清空容器)、equals()(比较两个集合是否相等)和iterator()(获取迭代器)。 1.2.2 迭代器 迭代器是遍历集合中元素的主要...
迭代器是遍历集合元素的主要方式,通过调用iterator()方法获取,然后使用hasNext()和next()方法来遍历集合中的每一个元素。迭代器还支持remove()方法,可以在遍历过程中删除元素。 1.3 LIST List接口继承自...
本节主要讨论的是Java集合中的高级话题,特别是关于`List`、`Set`接口以及它们的实现类,如`ArrayList`、`LinkedList`、`HashSet`、`HashMap`等。 首先,集合框架的核心是`Collection`接口,它是所有单个数据存储的...
- `Comparable`接口用于实现对象的自然排序,`equals()`和`hashCode()`方法用于比较和哈希存储,是确保集合中元素唯一性的重要方法。 在使用类集框架时,泛型的使用能提高类型安全性,避免类型转换异常。同时,...