集合类(三)
来源:互联网 发布:怎么在淘宝卖二手东西 编辑:程序博客网 时间:2024/06/17 18:10
Map<-TreeMap
二、java中List的用法和实例详解
List包括List接口以及List接口的所有实现类。因为List接口实现了Collection接口,所以List接口拥有Collection接口提供的所有常用方法,又因为List是列表类型,所以List接口还提供了一些适合于自身的常用方法,如表1所示。
表1 List接口定义的常用方法及功能
void
add(String item)
向滚动列表的末尾添加指定的项。
void
add(String item, int index)
向滚动列表中索引指示的位置添加指定的项。
void
addActionListener(ActionListener l)
添加指定的操作侦听器以从此列表接收操作事件。
void
addItem(String item)
已过时。 由
add(String)
取代。 void
addItem(String item, int index)
已过时。 由
add(String, int)
取代。 void
addItemListener(ItemListener l)
添加指定的项侦听器以接收此列表的项事件。
void
addNotify()
创建列表的同位体。
boolean
allowsMultipleSelections()
已过时。 从 JDK version 1.1 开始,由
isMultipleMode()
取代。 void
clear()
已过时。 从 JDK version 1.1 开始,由
removeAll()
取代。 int
countItems()
已过时。 从 JDK version 1.1 开始,由
getItemCount()
取代。 void
delItem(int position)
已过时。 由
remove(String)
和 remove(int)
取代。 void
delItems(int start, int end)
已过时。 从 JDK version 1.1 开始,后来不再公开使用。只有作为一种打包私有方法时,才希望保留此方法。
void
deselect(int index)
取消选择指定索引处的项。
AccessibleContext
getAccessibleContext()
获取与此
List
关联的 AccessibleContext
。 ActionListener[]
getActionListeners()
返回已在此列表上注册的所有操作侦听器的数组。
String
getItem(int index)
获取与指定索引关联的项。
int
getItemCount()
获取列表中的项数。
ItemListener[]
getItemListeners()
返回已在此列表上注册的所有项侦听器的数组。
String[]
getItems()
获取列表中的项。
<T extends EventListener>
T[]
getListeners(Class<T> listenerType)
返回目前已在此
List
上注册为 FooListener
的所有对象的数组。 Dimension
getMinimumSize()
确定此滚动列表的最小大小。
Dimension
getMinimumSize(int rows)
获取具有指定行数的列表的最少维数。
Dimension
getPreferredSize()
获取此滚动列表的首选大小。
Dimension
getPreferredSize(int rows)
获取具有指定行数的列表的首选维数。
int
getRows()
获取此列表中的可视行数。
int
getSelectedIndex()
获取列表中选中项的索引。
int[]
getSelectedIndexes()
获取列表中选中的索引。
String
getSelectedItem()
获取此滚动列表中选中的项。
String[]
getSelectedItems()
获取此滚动列表中选中的项。
Object[]
getSelectedObjects()
获取对象数组中此滚动列表的选中项。
int
getVisibleIndex()
获取上次由
makeVisible
方法使其可视的项的索引。 boolean
isIndexSelected(int index)
确定是否已选中此滚动列表中的指定项。
boolean
isMultipleMode()
确定此列表是否允许多项选择。
boolean
isSelected(int index)
已过时。 从 JDK version 1.1 开始,由
isIndexSelected(int)
取代。 void
makeVisible(int index)
使指定索引处的项可视。
Dimension
minimumSize()
已过时。 从 JDK version 1.1 开始,由
getMinimumSize()
取代。 Dimension
minimumSize(int rows)
已过时。 从 JDK version 1.1 开始,由
getMinimumSize(int)
取代。protected String
paramString()
返回表示此滚动列表状态的参数字符串。
Dimension
preferredSize()
已过时。 从 JDK version 1.1 开始,由
getPreferredSize()
取代。 Dimension
preferredSize(int rows)
已过时。 从 JDK version 1.1 开始,由
getPreferredSize(int)
取代。protected void
processActionEvent(ActionEvent e)
处理发生在此列表上的操作事件,方法是将这些事件指派给所有已注册的
ActionListener
对象。protected void
processEvent(AWTEvent e)
此滚动列表的进程事件。
protected void
processItemEvent(ItemEvent e)
处理发生在此列表上的项事件,方法是将这些事件指派给所有已注册的
ItemListener
对象。 void
remove(int position)
从此滚动列表中移除指定位置处的项。
void
remove(String item)
从列表中移除项的第一次出现。
void
removeActionListener(ActionListener l)
移除指定的操作侦听器,以便不再从此列表接收操作事件。
void
removeAll()
从此列表中移除所有项。
void
removeItemListener(ItemListener l)
移除指定的项侦听器,以便不再从此列表接收项事件。
void
removeNotify()
移除此列表的同位体。
void
replaceItem(String newValue, int index)
使用新字符串替换滚动列表中指定索引处的项。
void
select(int index)
选择滚动列表中指定索引处的项。
void
setMultipleMode(boolean b)
设置确定此列表是否允许多项选择的标志。
void
setMultipleSelections(boolean b)
已过时。 从 JDK version 1.1 开始,由
setMultipleMode(boolean)
取代。从表1可以看出,List接口提供的适合于自身的常用方法均与索引有关,这是因为List集合为列表类型,以线性方式存储对象,可以通过对象的索引操作对象。
List接口的常用实现类有ArrayList和LinkedList,在使用List集合时,通常情况下声明为List类型,实例化时根据实际情况的需要,实例化为ArrayList或LinkedList,例如:
List<String>l = new ArrayList<String>();// 利用ArrayList类实例化List集合
List<String>l2 = new LinkedList<String>();// 利用LinkedList类实例化List集合
1.add(int index, Objectobj)方法和set(intindex, Object obj)方法的区别
在使用List集合时需要注意区分add(int index, Objectobj)方法和set(intindex, Object obj)方法,前者是向指定索引位置添加对象,而后者是修改指定索引位置的对象,例如执行下面的代码:
src\com\mwq\TestCollection.java关键代码:
publicstatic void main(String[] args) {
Stringa = "A", b = "B", c = "C", d = "D", e ="E";
List<String>list = new LinkedList<String>();
list.add(a);
list.add(e);
list.add(d);
list.set(1,b);// 将索引位置为1的对象e修改为对象b
list.add(2,c);// 将对象c添加到索引位置为2的位置
Iterator<String>it = list.iterator();
while(it.hasNext()) {
System.out.println(it.next());
}
}
在控制台将输出如下信息:
A
B
C
D
因为List集合可以通过索引位置访问对象,所以还可以通过for循环遍历List集合,例如遍历上面代码中的List集合的代码如下:
src\com\mwq\TestCollection.java关键代码:
for(int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));//利用get(intindex)方法获得指定索引位置的对象
}
src\com\mwq\TestCollection.java完整代码如下:
packagecom.mwq;
importjava.util.ArrayList;
importjava.util.LinkedList;
importjava.util.Iterator;
importjava.util.List;
publicclass TestCollection {
publicstatic void main(String[] args) {
System.out.println("开始:");
Stringa = "A", b = "B", c = "C", d = "D", e ="E";
List<String>list = new LinkedList<String>();
list.add(a);
list.add(e);
list.add(d);
list.set(1,b);// 将索引位置为1的对象e修改为对象b
list.add(2,c);// 将对象c添加到索引位置为2的位置
Iterator<String>it = list.iterator();
while(it.hasNext()) {
System.out.println(it.next());
}
// for (int i = 0; i <list.size(); i++) {
// System.out.println(list.get(i));// 利用get(int index)方法获得指定索引位置的对象
// }
System.out.println("结束!");
}
}
2.indexOf(Object obj)方法和lastIndexOf(Object obj)方法的区别
在使用List集合时需要注意区分indexOf(Object obj)方法和lastIndexOf(Object obj)方法,前者是获得指定对象的最小的索引位置,而后者是获得指定对象的最大的索引位置,前提条件是指定的对象在List集合中具有重复的对象,否则如果在List集合中有且仅有一个指定的对象,则通过这两个方法获得的索引位置是相同的,例如执行下面的代码:
src\com\mwq\TestCollection.java关键代码:
publicstatic void main(String[] args) {
Stringa = "A", b = "B", c = "C", d = "D",repeat = "Repeat";
List<String>list = new ArrayList<String>();
list.add(a); // 索引位置为 0
list.add(repeat); // 索引位置为 1
list.add(b); // 索引位置为 2
list.add(repeat); // 索引位置为 3
list.add(c); // 索引位置为 4
list.add(repeat); // 索引位置为 5
list.add(d); // 索引位置为 6
System.out.println(list.indexOf(repeat));
System.out.println(list.lastIndexOf(repeat));
System.out.println(list.indexOf(b));
System.out.println(list.lastIndexOf(b));
}
src\com\mwq\TestCollection.java完整代码如下:
packagecom.mwq;
importjava.util.ArrayList;
importjava.util.List;
publicclass TestCollection {
publicstatic void main(String[] args) {
System.out.println("开始:");
Stringa = "A", b = "B", c = "C", d = "D",repeat = "Repeat";
List<String>list = new ArrayList<String>();
list.add(a);// 索引位置为 0
list.add(repeat);// 索引位置为 1
list.add(b);// 索引位置为 2
list.add(repeat);// 索引位置为 3
list.add(c);// 索引位置为 4
list.add(repeat);// 索引位置为 5
list.add(d);// 索引位置为 6
System.out.println(list.indexOf(repeat));
System.out.println(list.lastIndexOf(repeat));
System.out.println(list.indexOf(b));
System.out.println(list.lastIndexOf(b));
System.out.println("结束!");
}
}
在控制台将输出如下信息:
1
5
2
2
3.subList(int fromIndex, int toIndex)方法
在使用subList(intfromIndex, int toIndex)方法截取现有List集合中的部分对象生成新的List集合时,需要注意的是,新生成的集合中包含起始索引位置代表的对象,但是不包含终止索引位置代表的对象,例如执行下面的代码:
src\com\mwq\TestCollection.java关键代码:
publicstatic void main(String[] args) {
Stringa = "A", b = "B", c = "C", d = "D", e ="E";
List<String>list = new ArrayList<String>();
list.add(a); // 索引位置为 0
list.add(b); // 索引位置为 1
list.add(c); // 索引位置为 2
list.add(d); // 索引位置为 3
list.add(e); // 索引位置为 4
list= list.subList(1, 3);// 利用从索引位置1 到 3 的对象重新生成一个List集合
for(int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
src\com\mwq\TestCollection.java完整代码:
packagecom.mwq;
importjava.util.ArrayList;
importjava.util.List;
publicclass TestCollection {
publicstatic void main(String[] args) {
System.out.println("开始:");
Stringa = "A", b = "B", c = "C", d = "D", e ="E";
List<String>list = new ArrayList<String>();
list.add(a);// 索引位置为 0
list.add(b);// 索引位置为 1
list.add(c);// 索引位置为 2
list.add(d);// 索引位置为 3
list.add(e);// 索引位置为 4
list= list.subList(1, 3);// 利用从索引位置1 到 3 的对象重新生成一个List集合
for(int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
System.out.println("结束!");
}
}
在控制台将输出如下信息:
B
C
- 集合类(三)
- 集合类(三)
- java集合类(并发集合) 三
- C# 集合类(三):Stack
- C# 集合类(三):Stack
- C# 集合类(三):Stack
- java集合类(三)Arraylist实例
- guava (三) 集合工具类
- 三,Java集合类(1)
- Java常用工具类集合(三)
- 作业三:集合类
- java集合类(三)
- 集合学习(三)
- 集合总结(三)
- 集合(三):ConcurrentHashMap
- 集合初探(三)
- 集合(三)Map
- Java集合(三)
- 基于《Combining Sketch and Tone for Pencil Drawing Production》的图像铅笔画算法的实现
- fastDFS学习
- android设置状态栏颜色
- 英语每日一读
- 前端实践--JavaScript--动画(一)
- 集合类(三)
- 动态规划——minimum-path-sum
- Redis系列学习笔记10 发布与订阅
- hdu 1716 排列2
- 【leetcode】17. Letter Combinations of a Phone Number
- 可以确保您下载到免费的最新版本无插件绿色软件
- Cocos开发VR菜鸟宝典 第二讲:VR设备选择
- new 和alloc 的区别
- 解决Ubuntu环境下vim和QT中文输入问题