JAVA容器小结
来源:互联网 发布:淘宝天猫店铺装修教程 编辑:程序博客网 时间:2024/05/18 00:56
JAVA中的容器提供了非常完善的方法来保存对象,你可以使用这些工具来解决大数据量的问题。下面是笔者在开发中用到过的一些容器总结如此。
1 ArrayList
使用ArrayList非常简单:创建一个实例,用add()插入对象,然后用get()访问这些对象,此时需要索引,就象数组一样,但是不需要方括号,ArrayList还有size()方法,从而可以知道ArrayList的大小,也可以避免因为越界而引发错误。另外,ArrayList长于随机访问元素,但是在List的中间插入和移处元素时较慢。下面是ArrayList的例子(来自thinking in java):
/**//*
* @(#)AppleAndOrangesWithGenerics.java 1.0 May 17, 2008
* @author:Administrator
* Copyright 2008 CSS WEB Microsystems, Inc. All rights reserved.
* CSS WEB ROOM PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
package holding;
import java.util.ArrayList;
public class AppleAndOrangesWithGenerics ...{
public static void main(String[] args) ...{
ArrayList<Apple> apples = new ArrayList<Apple>();
for(int i = 0; i < 3; i++) ...{
apples.add(new Apple());
}
for(int i = 0; i < apples.size(); i++)
System.out.println(((Apple)apples.get(i)).id());
for(Apple c:apples)
System.out.println(c.id()+"-");
}
}
* @(#)AppleAndOrangesWithGenerics.java 1.0 May 17, 2008
* @author:Administrator
* Copyright 2008 CSS WEB Microsystems, Inc. All rights reserved.
* CSS WEB ROOM PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
package holding;
import java.util.ArrayList;
public class AppleAndOrangesWithGenerics ...{
public static void main(String[] args) ...{
ArrayList<Apple> apples = new ArrayList<Apple>();
for(int i = 0; i < 3; i++) ...{
apples.add(new Apple());
}
for(int i = 0; i < apples.size(); i++)
System.out.println(((Apple)apples.get(i)).id());
for(Apple c:apples)
System.out.println(c.id()+"-");
}
}
/**//*
* @(#)ListFeatures.java 1.0 May 17, 2008
* @author:Administrator
* Copyright 2008 CSS WEB Microsystems, Inc. All rights reserved.
* CSS WEB ROOM PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
package holding;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Random;
import typeinfo.pets.*;
public class ListFeatures ...{
public static void main(String[] args) ...{
Random rand = new Random(47);
List<Pet> pets = Pets.arrayList(7);
System.out.print("1: " + pets);
System.out.println();
Hamster h = new Hamster();
pets.add(h);
System.out.print("2: " + pets);
System.out.println();
System.out.print("3: " + pets.contains(h));
System.out.println();
pets.remove(h);
Pet p = pets.get(2);
System.out.print("4: " + pets.indexOf(p));
System.out.println();
Pet cymric = new Cymric();
System.out.print("5: " + pets.indexOf(cymric));
System.out.println();
System.out.print("6: " + pets.remove(cymric));
System.out.println();
System.out.print("7: " + pets.remove(p));
System.out.println();
System.out.print("8: " + pets);
System.out.println();
pets.add(3,new Mouse());
System.out.print("9: " + pets);
System.out.println();
List<Pet> sub = pets.subList(1,4);
System.out.print("sublist: " + sub);
System.out.println();
System.out.print("10: " + pets.containsAll(sub));
System.out.println();
Collections.sort(sub);
System.out.print("sorted sublist: " + sub);
System.out.println();
System.out.print("11: " + pets.containsAll(sub));
System.out.println();
Collections.shuffle(sub, rand);
System.out.print("shuffle sublist: " + sub);
System.out.println();
System.out.print("12: " + pets.containsAll(sub));
System.out.println();
List<Pet> copy = new ArrayList<Pet>(pets);
sub = Arrays.asList(pets.get(1),pets.get(4));
System.out.print("sub: " + sub);
System.out.println();
copy.retainAll(sub);
System.out.print("13: " + copy);
System.out.println();
copy = new ArrayList<Pet>(pets);
copy.remove(2);
System.out.print("14: " + copy);
System.out.println();
copy.removeAll(sub);
System.out.print("15: " + copy);
System.out.println();
copy.set(1, new Mouse());//Replace an element
System.out.print("16: " + copy);
System.out.println();
copy.addAll(2, sub);
System.out.print("17: " + copy);
System.out.println();
System.out.print("18: " + pets.isEmpty());
System.out.println();
pets.clear();
System.out.print("19: " + pets);
System.out.println();
System.out.print("20: " + pets.isEmpty());
System.out.println();
pets.addAll(Pets.arrayList(4));
System.out.print("21: " + pets);
System.out.println();
Object[] o = pets.toArray();
System.out.print("22: " + o[3]);
System.out.println();
Pet[] pa = pets.toArray(new Pet[0]);
System.out.print("23: " + pa[3].id());
System.out.println();
}
}
* @(#)ListFeatures.java 1.0 May 17, 2008
* @author:Administrator
* Copyright 2008 CSS WEB Microsystems, Inc. All rights reserved.
* CSS WEB ROOM PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
package holding;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Random;
import typeinfo.pets.*;
public class ListFeatures ...{
public static void main(String[] args) ...{
Random rand = new Random(47);
List<Pet> pets = Pets.arrayList(7);
System.out.print("1: " + pets);
System.out.println();
Hamster h = new Hamster();
pets.add(h);
System.out.print("2: " + pets);
System.out.println();
System.out.print("3: " + pets.contains(h));
System.out.println();
pets.remove(h);
Pet p = pets.get(2);
System.out.print("4: " + pets.indexOf(p));
System.out.println();
Pet cymric = new Cymric();
System.out.print("5: " + pets.indexOf(cymric));
System.out.println();
System.out.print("6: " + pets.remove(cymric));
System.out.println();
System.out.print("7: " + pets.remove(p));
System.out.println();
System.out.print("8: " + pets);
System.out.println();
pets.add(3,new Mouse());
System.out.print("9: " + pets);
System.out.println();
List<Pet> sub = pets.subList(1,4);
System.out.print("sublist: " + sub);
System.out.println();
System.out.print("10: " + pets.containsAll(sub));
System.out.println();
Collections.sort(sub);
System.out.print("sorted sublist: " + sub);
System.out.println();
System.out.print("11: " + pets.containsAll(sub));
System.out.println();
Collections.shuffle(sub, rand);
System.out.print("shuffle sublist: " + sub);
System.out.println();
System.out.print("12: " + pets.containsAll(sub));
System.out.println();
List<Pet> copy = new ArrayList<Pet>(pets);
sub = Arrays.asList(pets.get(1),pets.get(4));
System.out.print("sub: " + sub);
System.out.println();
copy.retainAll(sub);
System.out.print("13: " + copy);
System.out.println();
copy = new ArrayList<Pet>(pets);
copy.remove(2);
System.out.print("14: " + copy);
System.out.println();
copy.removeAll(sub);
System.out.print("15: " + copy);
System.out.println();
copy.set(1, new Mouse());//Replace an element
System.out.print("16: " + copy);
System.out.println();
copy.addAll(2, sub);
System.out.print("17: " + copy);
System.out.println();
System.out.print("18: " + pets.isEmpty());
System.out.println();
pets.clear();
System.out.print("19: " + pets);
System.out.println();
System.out.print("20: " + pets.isEmpty());
System.out.println();
pets.addAll(Pets.arrayList(4));
System.out.print("21: " + pets);
System.out.println();
Object[] o = pets.toArray();
System.out.print("22: " + o[3]);
System.out.println();
Pet[] pa = pets.toArray(new Pet[0]);
System.out.print("23: " + pa[3].id());
System.out.println();
}
}
运行结果:
1: [Rat, Manx, Cymric, Mutt, Pug, Cymric, Pug]
2: [Rat, Manx, Cymric, Mutt, Pug, Cymric, Pug, Hamster]
3: true
4: 2
5: -1
6: false
7: true
8: [Rat, Manx, Mutt, Pug, Cymric, Pug]
9: [Rat, Manx, Mutt, Mouse, Pug, Cymric, Pug]
sublist: [Manx, Mutt, Mouse]
10: true
sorted sublist: [Manx, Mouse, Mutt]
11: true
shuffle sublist: [Mouse, Manx, Mutt]
12: true
sub: [Mouse, Pug]
13: [Mouse, Pug]
14: [Rat, Mouse, Mutt, Pug, Cymric, Pug]
15: [Rat, Mutt, Cymric, Pug]
16: [Rat, Mouse, Cymric, Pug]
17: [Rat, Mouse, Mouse, Pug, Cymric, Pug]
18: false
19: []
20: true
21: [Manx, Cymric, Rat, EgyptianMau]
22: EgyptianMau
23: 14
2: [Rat, Manx, Cymric, Mutt, Pug, Cymric, Pug, Hamster]
3: true
4: 2
5: -1
6: false
7: true
8: [Rat, Manx, Mutt, Pug, Cymric, Pug]
9: [Rat, Manx, Mutt, Mouse, Pug, Cymric, Pug]
sublist: [Manx, Mutt, Mouse]
10: true
sorted sublist: [Manx, Mouse, Mutt]
11: true
shuffle sublist: [Mouse, Manx, Mutt]
12: true
sub: [Mouse, Pug]
13: [Mouse, Pug]
14: [Rat, Mouse, Mutt, Pug, Cymric, Pug]
15: [Rat, Mutt, Cymric, Pug]
16: [Rat, Mouse, Cymric, Pug]
17: [Rat, Mouse, Mouse, Pug, Cymric, Pug]
18: false
19: []
20: true
21: [Manx, Cymric, Rat, EgyptianMau]
22: EgyptianMau
23: 14
2 LinkedList
LinkedList也像ArrayList一样实现了基本的List接口,但是它执行某些操作(比如插入、删除)时要比ArrayList更加的高效,但是在随机访问操作方面要逊色一些。此外,LinkedList还添加了可以使其用作栈、队列或双端队列的方法。下面是关于LinkedList使用的例子:
/**//*
* @(#)LinkedListFeatures.java 1.0 May 18, 2008
* @author:Administrator
* Copyright 2008 CSS WEB Microsystems, Inc. All rights reserved.
* CSS WEB ROOM PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
package holding;
import java.util.LinkedList;
import static net.mindview.util.Print.*;
import typeinfo.pets.Hamster;
import typeinfo.pets.Pet;
import typeinfo.pets.Pets;
import typeinfo.pets.Rat;
public class LinkedListFeatures ...{
public static void main(String[] args) ...{
LinkedList<Pet> pets = new LinkedList<Pet>(Pets.arrayList(5));
print(pets);
print("pets.getFirst(): " + pets.getFirst());
print("pets.element(): " + pets.element());
print("pets.peek(): " + pets.peek());
print("pets.remove(): " + pets.remove());
print("pets.removeFirst(): " + pets.removeFirst());
print("pets.poll(): " + pets.poll());
print(pets);
pets.addFirst(new Rat());
print("After addFirst(): " + pets);
pets.offer(Pets.randomPet());
print("After offer(): " + pets);
pets.add(Pets.randomPet());
print("After add(): " + pets);
pets.addLast(new Hamster());
print("After addLast(): " + pets);
print("pets.removeLast(): " + pets.removeLast());
}
}
* @(#)LinkedListFeatures.java 1.0 May 18, 2008
* @author:Administrator
* Copyright 2008 CSS WEB Microsystems, Inc. All rights reserved.
* CSS WEB ROOM PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
package holding;
import java.util.LinkedList;
import static net.mindview.util.Print.*;
import typeinfo.pets.Hamster;
import typeinfo.pets.Pet;
import typeinfo.pets.Pets;
import typeinfo.pets.Rat;
public class LinkedListFeatures ...{
public static void main(String[] args) ...{
LinkedList<Pet> pets = new LinkedList<Pet>(Pets.arrayList(5));
print(pets);
print("pets.getFirst(): " + pets.getFirst());
print("pets.element(): " + pets.element());
print("pets.peek(): " + pets.peek());
print("pets.remove(): " + pets.remove());
print("pets.removeFirst(): " + pets.removeFirst());
print("pets.poll(): " + pets.poll());
print(pets);
pets.addFirst(new Rat());
print("After addFirst(): " + pets);
pets.offer(Pets.randomPet());
print("After offer(): " + pets);
pets.add(Pets.randomPet());
print("After add(): " + pets);
pets.addLast(new Hamster());
print("After addLast(): " + pets);
print("pets.removeLast(): " + pets.removeLast());
}
}
运行结果:
[Rat, Manx, Cymric, Mutt, Pug]
pets.getFirst(): Rat
pets.element(): Rat
pets.peek(): Rat
pets.remove(): Rat
pets.removeFirst(): Manx
pets.poll(): Cymric
[Mutt, Pug]
After addFirst(): [Rat, Mutt, Pug]
After offer(): [Rat, Mutt, Pug, Cymric]
After add(): [Rat, Mutt, Pug, Cymric, Pug]
After addLast(): [Rat, Mutt, Pug, Cymric, Pug, Hamster]
pets.removeLast(): Hamster
pets.getFirst(): Rat
pets.element(): Rat
pets.peek(): Rat
pets.remove(): Rat
pets.removeFirst(): Manx
pets.poll(): Cymric
[Mutt, Pug]
After addFirst(): [Rat, Mutt, Pug]
After offer(): [Rat, Mutt, Pug, Cymric]
After add(): [Rat, Mutt, Pug, Cymric, Pug]
After addLast(): [Rat, Mutt, Pug, Cymric, Pug, Hamster]
pets.removeLast(): Hamster
List的排序和查询:List排序和查询所使用的方法与对象数组所使用的相应方法有相同的名字和语法,只是用Collections的static方法代替Arrays的方法而已。例子如下:
/**//*
* @(#)ListSortSearch.java 1.0 May 18, 2008
* @author:Administrator
* Copyright 2008 CSS WEB Microsystems, Inc. All rights reserved.
* CSS WEB ROOM PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
package containers;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.ListIterator;
import java.util.Random;
import containers.Utilities;
import static net.mindview.util.Print.*;
public class ListSortSearch ...{
public static void main(String[] args) ...{
List<String> list = new ArrayList<String>(Utilities.list);
list.addAll(Utilities.list);
print(list);
Collections.shuffle(list,new Random(47));
print("shuffled: " + list);
ListIterator<String> it = list.listIterator(10);
while(it.hasNext()) ...{
it.next();
it.remove();
}
print("Trimmed: " + list);
Collections.sort(list);
print("sorted: " + list);
String key = list.get(7);
int index = Collections.binarySearch(list, key);
print("Location of " + key + " is " + index +
", list.get(" + index + ") = " + list.get(index));
Collections.sort(list,String.CASE_INSENSITIVE_ORDER);
print("Case-insensitive sorted: " + list);
key = list.get(7);
index = Collections.binarySearch(list, key, String.CASE_INSENSITIVE_ORDER);
print("Location of " + key + " is " + index +
", list.get(" + index + ") = " + list.get(index));
}
}
* @(#)ListSortSearch.java 1.0 May 18, 2008
* @author:Administrator
* Copyright 2008 CSS WEB Microsystems, Inc. All rights reserved.
* CSS WEB ROOM PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
package containers;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.ListIterator;
import java.util.Random;
import containers.Utilities;
import static net.mindview.util.Print.*;
public class ListSortSearch ...{
public static void main(String[] args) ...{
List<String> list = new ArrayList<String>(Utilities.list);
list.addAll(Utilities.list);
print(list);
Collections.shuffle(list,new Random(47));
print("shuffled: " + list);
ListIterator<String> it = list.listIterator(10);
while(it.hasNext()) ...{
it.next();
it.remove();
}
print("Trimmed: " + list);
Collections.sort(list);
print("sorted: " + list);
String key = list.get(7);
int index = Collections.binarySearch(list, key);
print("Location of " + key + " is " + index +
", list.get(" + index + ") = " + list.get(index));
Collections.sort(list,String.CASE_INSENSITIVE_ORDER);
print("Case-insensitive sorted: " + list);
key = list.get(7);
index = Collections.binarySearch(list, key, String.CASE_INSENSITIVE_ORDER);
print("Location of " + key + " is " + index +
", list.get(" + index + ") = " + list.get(index));
}
}
- JAVA容器小结
- java 容器类 小结
- JAVA容器小结1
- JAVA容器小结2
- java容器类小结
- Java容器类小结
- Java&&持有对象(容器小结)
- Java中容器基础知识小结
- Java容器小结【Java学习笔记】
- java中容器(Collection)的小结
- java容器(持有对象方式)小结
- Java容器小结和使用示例
- 容器 小结
- Java容器篇小结之Map自问自答
- STL容器删除小结
- vector容器类小结
- Spring IoC容器小结
- STL 容器小结
- 做一个弱者,站在巨人肩上。
- 监控和剖析数据库操作P6Spy,SQL Profiler,SQL 使用简介
- 菜鸟的Java学习笔记(1)-- RTTI
- Linux系统新手学习的11点建议
- 今天又败了两样东西
- JAVA容器小结
- [THINKING IN C++]CHAPTER 03:EXERCISE 01
- 用dbus-send查看当前system bus或者session bus上面挂载了多少service.
- 安装SQL Server 遇到错误提示:以前的某个程序安装已在安装计算机上创建挂起的文件操作。运行安装程序之前必须重新启动计算机!。
- [THINKING IN C++]CHAPTER 03:EXERCISE 03
- 搜索中心对称的最大子矩阵
- 我的感情
- [THINKING IN C++]CHAPTER 04:EXERCISE 04
- MMC不能打开文件数据库