本文实例讲述了Java集合功能与用法。分享给大家供大家参考,具体如下:
首发日期:2018-05-17
PS:
集合的获取依赖于迭代器Iterator。
package 集合;
import java.util.ArrayList;
import java.util.Iterator;
public class IteratorDemo {
public static void main(String[] args) {
ArrayList q=new ArrayList();
//增
q.add("a");
q.add("b");
q.add("c");
q.add("d");
//使用迭代器迭代
for(Iterator it=q.iterator();it.hasNext();) {
Object obj=it.next();
System.out.println(obj);//a b c d
if(obj=="a")
it.remove();
}
//删除后查看一下
System.out.println(q);
}
}


addAll(index,x):从指定的位置开始,将集合x中的所有元素插入到此列表中。set(index, x)用指定元素x替换列表中指定位置index的元素 。subList(fromIndex,toIndex):根据下标,从集合中取出元素,返回的是一个List 。listIterator():返回此列表中的元素的列表迭代器。ArrayList:
import java.util.ArrayList;
import java.util.Iterator;
public class ListDemo {
public static void main(String[] args) {
ArrayList q=new ArrayList();
//增
q.add("a");
q.add("b");
ArrayList a=new ArrayList();
a.addAll(q);
a.add("c");
a.add("d");
System.out.println(a);//[a, b, c, d],实现了toString,所以可以直接打印出来。
//删
// a.remove("a");
a.remove(0);
//查
System.out.println(a.size());//3
System.out.println(a.contains("b"));//true
System.out.println(a.isEmpty());//false
System.out.println(a);//[b, c, d]
//改
a.set(0, "bag");
System.out.println(a);
//使用迭代器迭代
for(Iterator it=a.iterator();it.hasNext();) {
System.out.println(it.next());//c d
}
}
}
LinkedList:
descendingIterator():返回逆序的迭代器
HashSet:

TreeSet:
LinkHashSet:

import java.util.HashSet;
import java.util.Set;
class Student{
String name;
int age;
Student(String name,int age){
this.name=name;
this.age=age;
}
public String toString() {//重写方法,以便sysout能输出
return "Student [name=" + name + ", age=" + age + "]";
}
public int hashCode() {//这里使用的是自动生成的代码,也可以使用自己的规则
final int prime = 31;
int result = 1;
result = prime * result + age;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
public boolean equals(Object obj) {//这里使用的是自动生成的代码,也可以使用自己的规则
if (this == obj)//如果两个地址相同,返回true
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Student other = (Student) obj;
if (age != other.age)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))//这里根据姓名和年龄来判断元素是否相同
return false;
return true;
}
}
public class HashSetDemo {
public static void main(String[] args) {
Set s=new HashSet();
// s.add("abc");
// s.add("abc");
// System.out.println(s);//这里因为可以使用自带的判断方法,所以不会发生重复
// s.add(new Student("lilei",18));
// s.add(new Student("lilei",18));
// System.out.println(s);//这里因为判断两个地址是不同的,所以会重复。
// 在重写equals之后:
s.add(new Student("lilei",18));
s.add(new Student("lilei",18));
System.out.println(s);//不发生重复。
}
}
import java.util.TreeSet;
class Student2 implements Comparable{
String name;
int age;
Student2(String name,int age){
this.name=name;
this.age=age;
}
public int compareTo(Object o) {
Student2 stu=(Student2)o;
return this.name.equals(stu.name)?this.age-stu.age:this.name.compareTo(stu.name);
//默认按姓名排序,如果有重复的姓名,按年龄排序。认为同名同年龄为同一元素
}
@Override
public String toString() {
return "Student2 [name=" + name + ", age=" + age + "]";
}
}
public class TreeSetDemo {
public static void main(String[] args) {
TreeSet t=new TreeSet();
// t.add("a");
// t.add("c");
// t.add("d");
// t.add("b");
// System.out.println(t);//对于非自定义对象,可以排序[a, b, c, d]
t.add(new Student2("lilei",18));
t.add(new Student2("lilei",17));
t.add(new Student2("hanmeimei",18));
t.add(new Student2("john",17));
t.add(new Student2("mike",27));
t.add(new Student2("alice",21));
System.out.println(t);
}
}
import java.util.Comparator;
import java.util.TreeSet;
class CompareByLength implements Comparator{
public int compare(Object o1, Object o2) {
Student3 stu1=(Student3)o1;
Student3 stu2=(Student3)o2;
return stu1.name.length()-stu2.name.length();
// 注意,这里也与compareTo类似,定义的规则必须要考虑到重复性,不然会导致属性值相同的元素
// 认为是同一元素
}
}
class Student3 {
String name;
int age;
Student3(String name,int age){
this.name=name;
this.age=age;
}
public String toString() {
return "Student2 [name=" + name + ", age=" + age + "]";
}
}
public class TreeSetDemo2 {
public static void main(String[] args) {
TreeSet t=new TreeSet(new CompareByLength());
t.add(new Student3("aaa",18));
t.add(new Student3("a",18));
// t.add(new Student3("d",18));//这里是元素重复性的检测,原因在compare
t.add(new Student3("aa",17));
t.add(new Student3("cccccccccc",17));
System.out.println(t);
}
}
null。entrySet():返回一个集合,集合中的对象都是包含键值对关系的entry类对象。HashMap:
TreeMap:
Properties:
getProperty(String key):用指定的键在此属性列表中搜索属性。load(InputStream inStream):从输入流中读取属性列表(键和元素对)。list(PrintStream out):将属性列表输出到指定的输出流。Map.Entry<K,V>getValue():返回与此项对应的值。setValue(value):用指定的值替换与此项对应的值
public class MapDemo {
public static void main(String[] args) {
Map m=new HashMap();
m.put("hanmeimei", "lilei");
m.put("wodeta", "wo");
m.put("apple", "google");
Set s=m.entrySet();
for(Iterator it=s.iterator();it.hasNext();) {
Map.Entry me=(Entry) it.next();
System.out.println(me.getKey()+"...."+me.getValue());
}
}
}
reverseOrder():返回一个比较器,它强行逆转实现了 Comparable 接口的对象 collection 的自然顺序。
import java.util.ArrayList;
import java.util.Collections;
public class ListDemo2 {
public static void main(String[] args) {
ArrayList q=new ArrayList();
q.add("a");
q.add("z");
q.add("b");
q.add("c");
System.out.println(Collections.max(q));
System.out.println(q);
Collections.sort(q);
System.out.println(q);
}
}
想了解更多,可以自行查看jdk文档。
更多关于java算法相关内容感兴趣的读者可查看本站专题:《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。