- 浏览: 14418 次
- 性别:
- 来自: 珠海
List集合代表一个有序集合,集合中每个元素都有其对应的顺序索引。List集合允许使用重复元素,可以通过索引来访问指定位置的集合元素。1、List接口和ListIterator接口
List作为Collection接口的子接口,可以使用Collection接口里的全部方法。List是有序集合,所以List集合里增加了一些根据索引来操作集合元素的方法:
void add(int index, Object element):将元素element插入在List集合的index处。
boolean addAll(int index, Collection c):将集合c所包含的所有元素都插入在List集合的index处。
Object get(int index):返回集合index索引处的元素。
int lastIndexOf(Object o):返回对象o在List集合中最后一次出现的位置索引。
Object remove(int index):删除并返回index索引处的元素。
Object set(int index, Object element):将index索引处的元素替换成element对象,返回新元素。
List subList(int fromIndex, int toIndex):返回从索引fromIndex(包含)到索引toIndex(不包含)处所有集合元素组成的子集合。
List集合可以根据索引来插入、替换和删除集合元素。
示例程序:
public class TestList
{
public static void main(String[] args)
{
List books = new ArrayList();
//向books集合中添加三个元素
books.add(new String("轻量级J2EE企业应用实战"));
books.add(new String("Struts2权威指南"));
books.add(new String("基于J2EE的Ajax宝典"));
System.out.println(books);
//将新字符串对象插入在第二个位置
books.add(1 , new String("ROR敏捷开发最佳实践")); //已添加的对象,和下面语句做对比
for (int i = 0 ; i < books.size() ; i++ )
{
System.out.println(books.get(i));
}
//删除第三个元素
books.remove(2);
System.out.println(books);
//判断指定元素在List集合中位置:输出1,表明位于第二位
System.out.println(books.indexOf(new String("ROR敏捷开发最佳实践"))); //新创建的对象
//将第二个元素替换成新的字符串对象
books.set(1, new String("Struts2权威指南"));
System.out.println(books);
//将books集合的第二个元素(包括)到第三个元素(不包括)截取称子集合
System.out.println(books.subList(1 , 2));
}
}
程序运行结果:
[轻量级J2EE企业应用实战, Struts2权威指南, 基于J2EE的Ajax宝典]
轻量级J2EE企业应用实战
ROR敏捷开发最佳实践
Struts2权威指南
基于J2EE的Ajax宝典
[轻量级J2EE企业应用实战, ROR敏捷开发最佳实践, 基于J2EE的Ajax宝典]
1
[轻量级J2EE企业应用实战, Struts2权威指南, 基于J2EE的Ajax宝典]
[Struts2权威指南]
程序说明:List集合可以使用普通for循环来遍历集合元素。List判断两个对象相等只要通过equals方法比较返回true即可。如在判断“ROR 敏捷开发最佳实践”字符串的位置是,新创建了一个新字符串对象,但是程序仍返回第一次创建字符串对象的位置。当调用List的set(int index, Object element)方法来改变List集合指定索引处元素时,指定的索引必须是List集合的有效索引。
与set只提供了一个iterator()方法不同,List还额外提供了一个listIteratro()方法,该方法返回一个ListIterator对象,ListIterator接口继承了Iterator接口,提供了专门操作List的方法。
ListIterator接口在Iterator接口基础上增加了如下方法:
boolean hasPrevious():返回该迭代器关联集合是否还有上一个元素。
Object previous():返回该迭代器上一个元素。
void add():在指定位置插入一个元素。
程序示例:
public static void main(String[] args)
{
String[] books = {
"Struts2权威指南",
"轻量级J2EE企业应用实战"
};
List bookList = new ArrayList();
for (int i = 0; i < books.length ; i++ )
{
bookList.add(books[i]);
}
ListIterator lit = bookList.listIterator();
while (lit.hasNext())
{
System.out.println(lit.next());
lit.add("-------分隔符-------");
}
System.out.println("==========下面开始反向迭代===========");
while(lit.hasPrevious())
{
System.out.println(lit.previous());
}
}
}
Struts2权威指南
轻量级J2EE企业应用实战
==========下面开始反向迭代===========
-------分隔符-------
轻量级J2EE企业应用实战
-------分隔符-------
Struts2权威指南
程序说明:List通过ListTterator迭代集合时,即可采用next()方法进行正向迭代,迭代过程中可以使用add()方法向上一次迭代元素的后面添加一个新元素。同时程序演示了向前迭代。
2、ArrayList和Vector实现类
ArrayList和Vector作为List类的两个典型实现,完全支持前面介绍的List接口全部功能。
ArrayList和Vector类都是基于数组实现的List类,他们封装了一个动态再分配的Object[]数组。每个ArrayList或 Vector对象有一个capacity属性,表示它们所封装的Object[]数组的长度。capacity会添加元素的个数而自动增加。当向集合中添 加大量元素时,可以使用ensureCapacity方法一次性地增加capacity。这可以减少增加重分配次数,从而提供性能。capacity大小 也可以在创建时就指定,该属性默认为10.
ArrayList和Vector提供如下两个方法来操作capacity属性:
void ensureCapacity(int minCapacity):将ArrayList或Vector集合的capacity增加minCapacity。
void trimToSize():调整ArrayList或Vector集合的capacity为列表当前大小。程序可调用该方法来减少ArrayList或Vector集合对象存储空间。
ArrayList和Vector用法几乎相同,Vector是一个古老的集合(从JDK1.0),起初Java还没有提供系统的集合框架,所以 Vector里提供了一些方法名很长的方法:例如addElement(Object obj), 等同于add()方法。从JDK1.2以后,Java提供了系统的集合框架,就将Vector改为实习List接口,作为List的实习之一,从而导致 Vector里有一些功能重复的方法。Vector具有很多缺点,通常尽量少用Vector实现类。
ArrayList和Vector的区别:ArrayList是线程不安全的,多个线程访问同一个ArrayList集合时,如果有超过一条线程修改了ArrayList集合,则程序必须手动保证该集合的同步性。Vector集合则是线程安全的,无线程序保证该集合的同步性。因为Vector是线程安全的,所以Vector的性能比ArrayList的性能要低。实际上,即使保证List集合线程安全,同样不推荐使用Vector实现类。Collections工具类,可以将一个ArrayList变成线程安全的。
Vector还提供了一个Stack子类,它用于模拟了”栈“这种数据结构,”栈“通常是指”后进先出“(LIFO)的容器。最后”push“进栈的元素,将最先被”pop“出栈。与Java中其他集合一样,进栈出栈的都是Object,因此从栈中取出元素后必须做类型转换,除非你只是使用Object具有的操作。所以stack类提供了如下几个方法:
Object peek():返回”栈“的第一个元素,但并不将该元素”pop“出栈。
Object pop():返回”栈“的第一个元素,并将该元素”pop“出栈。
void push(Object item):将一个元素”push“进栈,最后一个进”栈“的元素总是位于”栈“顶。
程序示例:
public class TestVector
{
public static void main(String[] args)
{
Stack v = new Stack();
//依次将三个元素push入"栈"
v.push("Struts2权威指南");
v.push("轻量级J2EE企业应用实战");
v.push("ROR敏捷开发最佳实践");
//输出:[Struts2权威指南, 轻量级J2EE企业应用实战, ROR敏捷开发最佳实践]
System.out.println(v);
//访问第一个元素,但并不将其pop出"栈",输出:ROR敏捷开发最佳实践
System.out.println(v.peek());
//依然输出:[Struts2权威指南, 轻量级J2EE企业应用实战, ROR敏捷开发最佳实践]
System.out.println(v);
//pop出第一个元素,输出:ROR敏捷开发最佳实践
System.out.println(v.pop());
//依然输出:[Struts2权威指南, 轻量级J2EE企业应用实战]
System.out.println(v);
}
}
[Struts2权威指南, 轻量级J2EE企业应用实战, ROR敏捷开发最佳实践]
ROR敏捷开发最佳实践
[Struts2权威指南, 轻量级J2EE企业应用实战, ROR敏捷开发最佳实践]
ROR敏捷开发最佳实践
[Struts2权威指南, 轻量级J2EE企业应用实战]
3、LinkedList实现类
List还有一个LinkedList的实现,它是一个基于链表实现的List类,对于顺序访问集合中的元素进行了优化,特别是当插入、删除元素时速度非常快。因为LinkedList即实现了List接口,也实现了Deque接口(双向队列),Deque接口是Queue接口的子接口,它代表一个双向列表,Deque接口里定义了一些可以双向操作队列的方法:
void addFirst(Object e):将制定元素插入该双向队列的开头。
void addLast(Object e):将制定元素插入该双向队列的末尾。
Iterator descendingIterator():返回以该双向队列对应的迭代器,该迭代器将以逆向顺序来迭代队列中的元素。
Object getFirst():获取、但不删除双向队列的第一个元素。
Object getLast(): 获取、但不删除双向队列的最后一个元素。
boolean offerFirst(Object e): 将指定的元素插入该双向队列的开头。
boolean offerLast(Object e): 将指定的元素插入该双向队列的末尾。
Object peekFirst(): 获取、但不删除该双向队列的第一个元素:如果此双端队列为空,则返回null。
Object peekLast():获取、但不删除该双向队列的最后一个元素:如果此双端队列为空,则返回null。
Object pollFirst():获取、并删除该双向队列的第一个元素:如果此双端队列为空,则返回null。
Object pollLast():获取、并删除该双向队列的最后一个元素:如果此双端队列为空,则返回null。
Object pop():pop出该双向队列所表示的栈中第一个元素。
void push(Object e):将一个元素push进该双向队列所表示的栈中(即该双向队列的头部)。
Object removerFirst():获取、并删除该双向队列的最后一个元素。
Object removeFirstOccurrence(Object o):删除该双向队列的第一次的出现元素o。
Object removeLast():获取、并删除该双向队列的最后一个元素。
Object removeLastOccurrence(Object o):删除该双向队列的最后一次出现的元素o。
从上面方法中可以看出,LinkedList不仅可以当成双向队列使用,也可以当成“栈”使用。同时,LinkedList实现了List接口,所以还被当成List使用。
程序示例:
public class TestLinkedList
{
public static void main(String[] args)
{
LinkedList books = new LinkedList();
//将字符串元素加入队列的尾部
books.offer("Struts2权威指南");
//将一个字符串元素入栈
books.push("轻量级J2EE企业应用实战");
//将字符串元素添加到队列的头部
books.offerFirst("ROR敏捷开发最佳实践");
for (int i = 0; i < books.size() ; i++ )
{
System.out.println(books.get(i));
}
//访问、并不删除队列的第一个元素
System.out.println(books.peekFirst());
//访问、并不删除队列的最后一个元素
System.out.println(books.peekLast());
//采用出栈的方式将第一个元素pop出队列
System.out.println(books.pop());
//下面输出将看到队列中第一个元素被删除
System.out.println(books);
//访问、并删除队列的最后一个元素
System.out.println(books.pollLast());
//下面输出将看到队列中只剩下中间一个元素:轻量级J2EE企业应用实战
System.out.println(books);
}
}
程序运行结果:
ROR敏捷开发最佳实践
轻量级J2EE企业应用实战
Struts2权威指南
ROR敏捷开发最佳实践
Struts2权威指南
ROR敏捷开发最佳实践
[轻量级J2EE企业应用实战, Struts2权威指南]
Struts2权威指南
[轻量级J2EE企业应用实战]
说明:程序中示范了LinkedList作为双向队列、栈和List集合的用法。LinkedList与ArrayList、Vector的实现机制完全不同,ArrayList、Vector内部以数组的形式来保存集合中的元素,因此随机访问集合元素上有较好的性能;而LinkedList内部以链表的形式来保存集合中的元素,因此随机访问集合时性能较差,但在插入、删除元素时性能非常出色(只需改变指针所指的地址即可)。Vector因实现了线程同步功能,所以各方面性能有所下降。
关于使用List集合的几点建议:
如果需要遍历List集合元素,对应ArrayList、Vector集合,则应该使用随机访问方法(get)来遍历集合元素,这样性能更好。对应LinkedList集合,则应采用迭代器(Iterator)来遍历集合元素。
如果需要经常执行插入、删除操作来改变Lst集合大小,则应该使用LinkedList集合,而不是ArrayList。
如果多条线程需要同时访问List集合中的元素,可以考虑使用Vector这个同步实现。
List作为Collection接口的子接口,可以使用Collection接口里的全部方法。List是有序集合,所以List集合里增加了一些根据索引来操作集合元素的方法:
void add(int index, Object element):将元素element插入在List集合的index处。
boolean addAll(int index, Collection c):将集合c所包含的所有元素都插入在List集合的index处。
Object get(int index):返回集合index索引处的元素。
int lastIndexOf(Object o):返回对象o在List集合中最后一次出现的位置索引。
Object remove(int index):删除并返回index索引处的元素。
Object set(int index, Object element):将index索引处的元素替换成element对象,返回新元素。
List subList(int fromIndex, int toIndex):返回从索引fromIndex(包含)到索引toIndex(不包含)处所有集合元素组成的子集合。
List集合可以根据索引来插入、替换和删除集合元素。
示例程序:
public class TestList
{
public static void main(String[] args)
{
List books = new ArrayList();
//向books集合中添加三个元素
books.add(new String("轻量级J2EE企业应用实战"));
books.add(new String("Struts2权威指南"));
books.add(new String("基于J2EE的Ajax宝典"));
System.out.println(books);
//将新字符串对象插入在第二个位置
books.add(1 , new String("ROR敏捷开发最佳实践")); //已添加的对象,和下面语句做对比
for (int i = 0 ; i < books.size() ; i++ )
{
System.out.println(books.get(i));
}
//删除第三个元素
books.remove(2);
System.out.println(books);
//判断指定元素在List集合中位置:输出1,表明位于第二位
System.out.println(books.indexOf(new String("ROR敏捷开发最佳实践"))); //新创建的对象
//将第二个元素替换成新的字符串对象
books.set(1, new String("Struts2权威指南"));
System.out.println(books);
//将books集合的第二个元素(包括)到第三个元素(不包括)截取称子集合
System.out.println(books.subList(1 , 2));
}
}
程序运行结果:
[轻量级J2EE企业应用实战, Struts2权威指南, 基于J2EE的Ajax宝典]
轻量级J2EE企业应用实战
ROR敏捷开发最佳实践
Struts2权威指南
基于J2EE的Ajax宝典
[轻量级J2EE企业应用实战, ROR敏捷开发最佳实践, 基于J2EE的Ajax宝典]
1
[轻量级J2EE企业应用实战, Struts2权威指南, 基于J2EE的Ajax宝典]
[Struts2权威指南]
程序说明:List集合可以使用普通for循环来遍历集合元素。List判断两个对象相等只要通过equals方法比较返回true即可。如在判断“ROR 敏捷开发最佳实践”字符串的位置是,新创建了一个新字符串对象,但是程序仍返回第一次创建字符串对象的位置。当调用List的set(int index, Object element)方法来改变List集合指定索引处元素时,指定的索引必须是List集合的有效索引。
与set只提供了一个iterator()方法不同,List还额外提供了一个listIteratro()方法,该方法返回一个ListIterator对象,ListIterator接口继承了Iterator接口,提供了专门操作List的方法。
ListIterator接口在Iterator接口基础上增加了如下方法:
boolean hasPrevious():返回该迭代器关联集合是否还有上一个元素。
Object previous():返回该迭代器上一个元素。
void add():在指定位置插入一个元素。
程序示例:
public static void main(String[] args)
{
String[] books = {
"Struts2权威指南",
"轻量级J2EE企业应用实战"
};
List bookList = new ArrayList();
for (int i = 0; i < books.length ; i++ )
{
bookList.add(books[i]);
}
ListIterator lit = bookList.listIterator();
while (lit.hasNext())
{
System.out.println(lit.next());
lit.add("-------分隔符-------");
}
System.out.println("==========下面开始反向迭代===========");
while(lit.hasPrevious())
{
System.out.println(lit.previous());
}
}
}
Struts2权威指南
轻量级J2EE企业应用实战
==========下面开始反向迭代===========
-------分隔符-------
轻量级J2EE企业应用实战
-------分隔符-------
Struts2权威指南
程序说明:List通过ListTterator迭代集合时,即可采用next()方法进行正向迭代,迭代过程中可以使用add()方法向上一次迭代元素的后面添加一个新元素。同时程序演示了向前迭代。
2、ArrayList和Vector实现类
ArrayList和Vector作为List类的两个典型实现,完全支持前面介绍的List接口全部功能。
ArrayList和Vector类都是基于数组实现的List类,他们封装了一个动态再分配的Object[]数组。每个ArrayList或 Vector对象有一个capacity属性,表示它们所封装的Object[]数组的长度。capacity会添加元素的个数而自动增加。当向集合中添 加大量元素时,可以使用ensureCapacity方法一次性地增加capacity。这可以减少增加重分配次数,从而提供性能。capacity大小 也可以在创建时就指定,该属性默认为10.
ArrayList和Vector提供如下两个方法来操作capacity属性:
void ensureCapacity(int minCapacity):将ArrayList或Vector集合的capacity增加minCapacity。
void trimToSize():调整ArrayList或Vector集合的capacity为列表当前大小。程序可调用该方法来减少ArrayList或Vector集合对象存储空间。
ArrayList和Vector用法几乎相同,Vector是一个古老的集合(从JDK1.0),起初Java还没有提供系统的集合框架,所以 Vector里提供了一些方法名很长的方法:例如addElement(Object obj), 等同于add()方法。从JDK1.2以后,Java提供了系统的集合框架,就将Vector改为实习List接口,作为List的实习之一,从而导致 Vector里有一些功能重复的方法。Vector具有很多缺点,通常尽量少用Vector实现类。
ArrayList和Vector的区别:ArrayList是线程不安全的,多个线程访问同一个ArrayList集合时,如果有超过一条线程修改了ArrayList集合,则程序必须手动保证该集合的同步性。Vector集合则是线程安全的,无线程序保证该集合的同步性。因为Vector是线程安全的,所以Vector的性能比ArrayList的性能要低。实际上,即使保证List集合线程安全,同样不推荐使用Vector实现类。Collections工具类,可以将一个ArrayList变成线程安全的。
Vector还提供了一个Stack子类,它用于模拟了”栈“这种数据结构,”栈“通常是指”后进先出“(LIFO)的容器。最后”push“进栈的元素,将最先被”pop“出栈。与Java中其他集合一样,进栈出栈的都是Object,因此从栈中取出元素后必须做类型转换,除非你只是使用Object具有的操作。所以stack类提供了如下几个方法:
Object peek():返回”栈“的第一个元素,但并不将该元素”pop“出栈。
Object pop():返回”栈“的第一个元素,并将该元素”pop“出栈。
void push(Object item):将一个元素”push“进栈,最后一个进”栈“的元素总是位于”栈“顶。
程序示例:
public class TestVector
{
public static void main(String[] args)
{
Stack v = new Stack();
//依次将三个元素push入"栈"
v.push("Struts2权威指南");
v.push("轻量级J2EE企业应用实战");
v.push("ROR敏捷开发最佳实践");
//输出:[Struts2权威指南, 轻量级J2EE企业应用实战, ROR敏捷开发最佳实践]
System.out.println(v);
//访问第一个元素,但并不将其pop出"栈",输出:ROR敏捷开发最佳实践
System.out.println(v.peek());
//依然输出:[Struts2权威指南, 轻量级J2EE企业应用实战, ROR敏捷开发最佳实践]
System.out.println(v);
//pop出第一个元素,输出:ROR敏捷开发最佳实践
System.out.println(v.pop());
//依然输出:[Struts2权威指南, 轻量级J2EE企业应用实战]
System.out.println(v);
}
}
[Struts2权威指南, 轻量级J2EE企业应用实战, ROR敏捷开发最佳实践]
ROR敏捷开发最佳实践
[Struts2权威指南, 轻量级J2EE企业应用实战, ROR敏捷开发最佳实践]
ROR敏捷开发最佳实践
[Struts2权威指南, 轻量级J2EE企业应用实战]
3、LinkedList实现类
List还有一个LinkedList的实现,它是一个基于链表实现的List类,对于顺序访问集合中的元素进行了优化,特别是当插入、删除元素时速度非常快。因为LinkedList即实现了List接口,也实现了Deque接口(双向队列),Deque接口是Queue接口的子接口,它代表一个双向列表,Deque接口里定义了一些可以双向操作队列的方法:
void addFirst(Object e):将制定元素插入该双向队列的开头。
void addLast(Object e):将制定元素插入该双向队列的末尾。
Iterator descendingIterator():返回以该双向队列对应的迭代器,该迭代器将以逆向顺序来迭代队列中的元素。
Object getFirst():获取、但不删除双向队列的第一个元素。
Object getLast(): 获取、但不删除双向队列的最后一个元素。
boolean offerFirst(Object e): 将指定的元素插入该双向队列的开头。
boolean offerLast(Object e): 将指定的元素插入该双向队列的末尾。
Object peekFirst(): 获取、但不删除该双向队列的第一个元素:如果此双端队列为空,则返回null。
Object peekLast():获取、但不删除该双向队列的最后一个元素:如果此双端队列为空,则返回null。
Object pollFirst():获取、并删除该双向队列的第一个元素:如果此双端队列为空,则返回null。
Object pollLast():获取、并删除该双向队列的最后一个元素:如果此双端队列为空,则返回null。
Object pop():pop出该双向队列所表示的栈中第一个元素。
void push(Object e):将一个元素push进该双向队列所表示的栈中(即该双向队列的头部)。
Object removerFirst():获取、并删除该双向队列的最后一个元素。
Object removeFirstOccurrence(Object o):删除该双向队列的第一次的出现元素o。
Object removeLast():获取、并删除该双向队列的最后一个元素。
Object removeLastOccurrence(Object o):删除该双向队列的最后一次出现的元素o。
从上面方法中可以看出,LinkedList不仅可以当成双向队列使用,也可以当成“栈”使用。同时,LinkedList实现了List接口,所以还被当成List使用。
程序示例:
public class TestLinkedList
{
public static void main(String[] args)
{
LinkedList books = new LinkedList();
//将字符串元素加入队列的尾部
books.offer("Struts2权威指南");
//将一个字符串元素入栈
books.push("轻量级J2EE企业应用实战");
//将字符串元素添加到队列的头部
books.offerFirst("ROR敏捷开发最佳实践");
for (int i = 0; i < books.size() ; i++ )
{
System.out.println(books.get(i));
}
//访问、并不删除队列的第一个元素
System.out.println(books.peekFirst());
//访问、并不删除队列的最后一个元素
System.out.println(books.peekLast());
//采用出栈的方式将第一个元素pop出队列
System.out.println(books.pop());
//下面输出将看到队列中第一个元素被删除
System.out.println(books);
//访问、并删除队列的最后一个元素
System.out.println(books.pollLast());
//下面输出将看到队列中只剩下中间一个元素:轻量级J2EE企业应用实战
System.out.println(books);
}
}
程序运行结果:
ROR敏捷开发最佳实践
轻量级J2EE企业应用实战
Struts2权威指南
ROR敏捷开发最佳实践
Struts2权威指南
ROR敏捷开发最佳实践
[轻量级J2EE企业应用实战, Struts2权威指南]
Struts2权威指南
[轻量级J2EE企业应用实战]
说明:程序中示范了LinkedList作为双向队列、栈和List集合的用法。LinkedList与ArrayList、Vector的实现机制完全不同,ArrayList、Vector内部以数组的形式来保存集合中的元素,因此随机访问集合元素上有较好的性能;而LinkedList内部以链表的形式来保存集合中的元素,因此随机访问集合时性能较差,但在插入、删除元素时性能非常出色(只需改变指针所指的地址即可)。Vector因实现了线程同步功能,所以各方面性能有所下降。
关于使用List集合的几点建议:
如果需要遍历List集合元素,对应ArrayList、Vector集合,则应该使用随机访问方法(get)来遍历集合元素,这样性能更好。对应LinkedList集合,则应采用迭代器(Iterator)来遍历集合元素。
如果需要经常执行插入、删除操作来改变Lst集合大小,则应该使用LinkedList集合,而不是ArrayList。
如果多条线程需要同时访问List集合中的元素,可以考虑使用Vector这个同步实现。
发表评论
-
集合包
2015-09-29 10:20 426常用有collection和Map两个接口的实现类,c ... -
查看pid状态
2015-09-23 09:13 546jstat -gcutil [pid] 1000 10查看Ed ... -
内存回收
2015-09-22 22:31 326收集器 JVM通过GC来 ... -
JVM内存管理
2015-09-22 22:30 389内存空间 可划分 ... -
深入理解jvm
2015-09-22 22:29 332jvm标准结构 class的执行在Sun JDK中有解释执行和 ... -
SOA面向服务架构
2015-09-22 22:28 503强调系统之间以标准的服务方式进行交互,各系统可采用不同 ... -
基于远程调用方式实现系统间通信
2015-09-22 22:27 5311、基于java自身技术实现远程调用方式的系统间通信 RMI ... -
java反射
2013-06-28 13:33 571在Java运行时环境中,对于任意一个类能否知道这个类有哪些属性 ...
相关推荐
“集合框架”由一组用来操作对象的接口组成。不同接口描述不同类型的组。 在很大程度上,一旦您理解了接口,您就理解了框架。 虽然您总要创建接口特定的实现,但访问实际集合的方法应该限制在接口方法的使用上;...
Java-Java集合体系-List-Set 内容概要:总结了Java集体体系中的三大集合接口LIst、Set、Map,本文...适合场景:开发和面试中必备,Java集合体系是许多框架的基础,在开发中大量使用,面试题也是必问的题目,非常重要。
超全Java集合框架讲解 - 超全Java集合框架讲解 - 集合框架总览 - Iterator Iterable ListIterator - Map 和 Collection 接口 - Map 集合体系详解 - HashMap - LinkedHashMap - TreeMap - WeakHashMap - ...
Java基础知识汇总之集合框架List、Map、Set接口及其子类综合对比
4、线程安全:Java集合框架中的某些数据结构和算法是线程安全的,可以在多线程环境中使用。 Java集合框架中的接口 Java集合框架中定义了一些接口,这些接口是实现各种数据结构的基础。 下面是Java集合框架中的一些...
Java集合框架汇总 1.集合框架结构图 1 2.两种特殊的Java容器类List和Set分析 2 3. Collection 接口: 2 4.Iterator 接口: 3 5.List接口: 3 5.1 LinkedList类: 5 5.2 ArrayList类: 5 6.Set接口: 5 7.Map...
Java集合框架中的List接口是一种有序的集合,它可以存储重复的元素。它是Collection接口的子接口,提供了一系列可以对列表进行操作的方法,如添加、插入、删除、获取元素等。List接口还可以通过索引访问元素,类似于...
其中Collection接口是Java集合框架的基础接口之一,定义了一些基本的集合操作,包括添加元素、删除元素、遍历集合等。在这里,我将为您详细介绍Java集合框架中的Collection接口。 Collection接口是Java集合框架中的...
Java集合框架,set、list接口及其子集,接口的继承关系
Java集合框架常见面试题 剖析⾯试最常⻅问题之 Java 集合框架 包含以下几个模块: 1、集合概述 2、Collection子接口之List 3、Collection子接口之Set 4、Map接口 5、Collection工具类 6、其他重要问题
Java 集合框架+实例 框架介绍了集合接口、集合类、集合算法等概念 实例包括集合比较、HashMap遍历、集合长度、集合遍历、集合输出、List 循环移动元素、遍历 HashTable 的键值等案例
掌握集合的概念、体系结构、分类及使用场景 2)了解Set接口及主要实现类(HashSet、TreeSet) 3)了解List接口及主要实现类...2、为什么使用集合框架,而尽可能少用数组作为存储结构? 3、如何使用TreeSet实现第一题?
农业信息系统开发
掌握Java集合框架中的三大类集合的特征和适用场合 掌握ArrayList类的使用 掌握HashMap类的使用 了解HashSet类的使用 掌握Collections类的使用 了解集合框架中的其它集合类 集合框架(Collection Framework) java.util...
如果一切正常,那么可以看到一个使用Java集合框架完成的通过BaseDAO类,而不是使用jstl包完成的。 注意:在BaseDAO类有两个重载的方法:findAllTable方法,第一个是使用jstl包的Result接口对象;第二是本人使用集合...
“集合框架”(Collections Framework)提供了一组精心设计的接口和类,它们以单个单元即集合的形式存储和操作数据组 。对于计算机科学数据结构课程中学到的许多抽象数据类型如映射(map)、集(set)、列表(list)...
集合接口:6个接口,表示不同集合类型,是集合框架的基础。 抽象类:5个抽象类,对集合接口的部分实现。可扩展为自定义集合类。 实现类:8个实现类,对接口的具体实现。 在很大程度上,一旦您理解了接口,您就...
java集合框架,主要包括sort,list,map接口下的类的详解,希望可以帮助初学者精确地理解其内容
Java 2集合框架图 集合接口:6个接口(短虚线表示),表示不同集合类型,是集合框架的基础。 抽象类:5个抽象类(长虚线表示),对集合接口的部分实现。可扩展为自定义集合类。 实现类:8个实现类(实线表示),...
14、JAVA集合框架之list接口、LinkedList类、ArrayList类、Vector类 15、JAVA集合框架之Set接口、HashSet类、TreeSet类 16、JAVA集合框架之Map接口、HashMap类、Trelap类、Hashtable类 17、JAVA异常Exception 18...