一、Iterator(重要的接口)
是以统一方式对各种集合元素进行遍历/迭代的工具,也称为“迭代器”。
它允许在“遍历”过程中移除集合中的元素。
主要的方法有:
Boolean hasNext()
Object next()
Void remove()
例1:import java.util.*;
class TestIterator
{
public static void main(String[] args)
{
ArrayList a=new ArrayList();
a.add("hu");
a.add("g");
a.add("n");
Iterator it=a.iterator();
while (it.hasNext())
{
String ming=(String)it.next();
System.out.println(ming);
}
Vector v=new Vector();
v.addElement(new Date());
v.addElement(new Date(208121221L));
it=v.iterator();
while (it.hasNext())
{
Date time=(Date)it.next();
System.out.println(time);
}
System.out.println("Hello World!");
}
}
例2:import java.util.*;
class TestIterator2
{
public static void main(String[] args)
{
Vector v=new Vector();
v.addElement(new Person("hu",18));
v.addElement(new Person("g",26));
v.addElement(new Person("n",40));
Iterator it=v.iterator();
while (it.hasNext())
{
Person p=(Person)it.next();
System.out.println(p);
if(p.getName().equals("hu"))
{p.setAge(p.getAge()+50);}
else if(p.getName().equals("n"))
it.remove();
}
for (int i=0;i<v.size() ; i++)
{
System.out.println(v.elementAt(i));
}
System.out.println("Hello World!");
}
}
class Person
{
private String name;
private int age;
public Person(String name,int age)
{
this.name=name;this.age=age;
}
public void setName(String name)
{this.name=name;}
public String getName()
{return name;}
public void setAge(int age)
{this.age=age;}
public int getAge()
{return age; }
public String toString()
{ return ""+name+" : "+ age;}
}
注意:不安全原因:放进去ude内容是object类,又把它转换为Iterator类型。解决方法:<String>
修改:public static void main(String[] args)
{
ArrayList<String> a=new ArrayList<String>();
a.add("hu");
a.add("g");
a.add("n");
Iterator<String> it=a.iterator();
while (it.hasNext())
{
String ming=it.next();
System.out.println(ming);
}
二、HashSet
不允许出现重复的元素,不保证集合中元素的顺序,允许包含最多一个值为NULL的元素。
例:import java.util.*;
class TestHashSet
{
public static void main(String[] args)
{
HashSet h=new HashSet();
h.add("h");
h.add("o");
h.add(new Integer(3));
h.add(new Double(3.0));
h.add("o");
System.out.println(h.add(new Integer(3)));
System.out.println(h);
System.out.println(h.size());
Iterator it=h.iterator();
while (it.hasNext())
{
Object o=it.next();
System.out.println(o);
}
h.remove("o");
System.out.println(h);
}
}
三、TreeSet
可以实现排序(升序)功能,描述的是Set的变体
例:import java.util.*;
class TestTreeSet
{
public static void main(String[] args)
{
TreeSet ts=new TreeSet();
ts.add("orange");
ts.add("banana");
ts.add("apple");
ts.add("grape");
Iterator it=ts.iterator();
while (it.hasNext())
{
String fruit=(String)it.next();
System.out.println(fruit);
}
System.out.println("Hello World!");
}
}
四、Comparable接口
该接口中定义的comparableTo()用于提供对其实现类的对象进行整体排序所需的比较逻辑。
用户在重新comparableTo()方法以定制比较逻辑时,需要确保其与等价性判断方法equals()保持一致。
五、HashMap
基于哈希表实现了前述的映射集合结构。
影响性能的参数:初始容量,加载因子(0.75)
若不存在当前的检索值时,get()方法就会返回NULL值。
例:import java.util.*;
class TestHashMap
{
public static void main(String[] args)
{
HashMap h=new HashMap();
h.put(new Integer(1003),new Person(1003,"huang",15));
h.put(new Integer(1008),new Person(1008,"guo",25));
h.put(1015,new Person(1015,"quan",55));
Person p=(Person)h.get(1008);
System.out.println(p);
Set names=h.keySet();
for (Object o:names )
{
System.out.println(o);
}
Collection values=h.values();
for (Object o:values )
{
System.out.println(o);
}
System.out.println("Hello World!");
}
}
public class Person
{
private String name;
private int age;private int id;
public Person(String name,int age)
{this.name=name;this.age=age;}
public Person(int id,String name,int age)
{this.id=id;
this.name=name;this.age=age;
}
public void setName(String name)
{this.name=name;}
public String getName()
{return name;}
public void setAge(int age)
{this.age=age;}
public int getAge()
{return age; }
public String toString()
{ return name+" : "+ age;}
}
六、Hashtable
Hashtable中元素的“键”和“值”均不能为NULL,且它是同步(线程安全)的。
小结:3种线程同步的集合:
Vector,Stack,Hashtable
七、Enumeration接口
只提供了遍历Vecto和Hashtable(及其子类Properties),且不支持集合元素的移除操作。
八、Collection类
定义了多种集合的操作方法,实现了对集合元素的排序、取极值、批量拷贝、集合结构转换、循环移位以及匹配性检查等功能。
主要方法:
public static void sort(List list)
public static void reverse(List list) //倒置
public static void shuffle(List list) //随机打乱
public static void rotate(List list) //循环移位
例:import java.util.*;
public class TestCollections {
public static void main(String[] args){
ArrayList a=new ArrayList();
a.add(75); a.add(38); a.add(21);
a.add(4); a.add(12);
System.out.println(a);
Collections.sort(a);
Collections.reverse(a);
Collections.shuffle(a);
Collections.rotate(a, 2);
ArrayList b=new ArrayList();
b.add(55);b.add(66);
System.out.println(b);
Collections.copy(a,b);
System.out.println(a);
System.out.println(Collections.frequency(a,66));
System.out.println(Collections.max(a));
System.out.println(Collections.min(a));
}
}
八、Arrays类
定义了多种数组操作方法,实现了对数组的排序、填充、转换为列表或字符串形式、增强的检索和深度比较等功能。
例:import java.util.*;
public class TestArrays {
public static void main(String[] args) {
Integer[] a={3,25,12,79,48};
System.out.println(a);
System.out.println(Arrays.toString(a));
Arrays.sort(a);
System.out.println(Arrays.toString(a));
int idx=Arrays.binarySearch(a,25);
System.out.println(idx);
List list=Arrays.asList(3,4,5);
System.out.println(list);
list.set(2, 66);
System.out.println(Arrays.toString(a));
}
}
九、I/O系统
流:在Java程序中,对于数据的输入、输出操作以“流”方式进行。
文件
(外存)
程序
(内存)
输入流
输出流
分类:
1按数据流方向不同:输入流,输出流
2按处理数据单位不同:字节流(8位),字符流(16位)
3按功能不同:节点流,处理流
四种基本抽象流:
字节流 字符流
输入流 InputStream Reader
输出流 OuputStream Writer
节点流:可以从一个特定的数据源(节点)读写数据。
数据流是“连接”在已存在的流上。
注:摘抄自别人的 留着用
分享到:
相关推荐
集合操作是Java开发中常见的任务,JavaUtils可能包含了对`List`、`Set`、`Map`等集合进行操作的工具,例如快速合并两个列表、去重、排序、查找元素、转换集合等。这些工具可以简化处理集合时的代码逻辑。 4. **...
<Call Stack = DEBUG_FRAME = org.apache.axis2.util.JavaUtils.callStackToString(JavaUtils.java:564) DEBUG_FRAME = org.apache.axis2.description.ParameterIncludeImpl.debugParameterAdd(ParameterIncludeImpl...
在开发基于Axis2的Web服务时,可能会遇到各种错误和异常,其中之一就是与`org.apache.axis2.util.JavaUtils.callStackToString`相关的问题。这个问题通常出现在Axis2尝试获取并打印堆栈跟踪信息时。 `...
使用泛型可以确保JavaUtils工具类的方法在编译时就具有类型安全,例如,`ListUtils.concat(List<T> list1, List<T> list2)`确保合并的两个列表元素类型一致。 5. **线程安全**: 在多线程环境下,某些工具类或其...
JavaUtils工具类可能包含静态方法,如`writeToExcel(List<List<String>> data, String filePath)`,该方法接受二维列表作为输入,将数据写入到指定路径的Excel文件中。 3. **Excel样式操作**:除了基本的数据读写,...
本篇文章将详细探讨名为"utils:Java utils collection 工具集"的资源,该资源主要包含闭包工具、树结构(特别是KD树)以及图形算法等关键组件。 首先,我们来关注闭包工具。闭包是Java 8引入的一个重要特性,它允许...
JavaUtils,通用的Java工具类,主要包括基础工具类(时间、正则表达式、字符串、随机数等等)_JavaUtils
Java Property Utils是Java开发中的一个实用工具库,主要用于处理和操作Java系统属性和配置文件。在给定的场景中,`java-property-utils-1.9.1.jar` 和 `java-property-utils-1.10.jar` 是这个库的两个不同版本,...
1. **集合处理**:JavaUtils提供了对Java集合框架的扩展,包括对List、Set、Map等数据结构的操作增强,如便利的转换、过滤、映射等功能,这在处理数据集合时非常有用。 2. **函数式编程**:随着Java 8引入了Lambda...
JavaUtils工具类是Java开发中常见的一类代码资源,它们提供了许多便利的静态方法,用于简化常见的编程任务。在这个压缩包文件"javaUtils"中,我们可以期待找到一系列实用的工具类,比如正则表达式处理工具和Base64...
异步数组实用程序 数组相关的异步实用程序的集合。 tl; dr 通过执行npm install @wojtekmaj/async-array-utils或yarn add @wojtekmaj/async-array-utils 。 通过import * as asyncArrayUtils from '@wojtekmaj/...
BeanUtils.java ...ClassUtils.java CollectionUtils.java ContentHandler.java DateUtils.java DigestUtils.java DomContentHandler.java DomUtils.java FileCopyUtils.java FileUtils.java GenericsUtils.java ...