函数式编程 - 列表
列表是函数式编程语言中最通用的数据类型,用于存储一系列相同数据项的集合。这个概念类似于面向对象编程中的数组。列表项可以用方括号括起来,并用逗号分隔。将数据写入列表的方式因语言而异。
在 Java 中创建数字列表的程序
Java/C/C++ 中没有列表数据类型,但我们有替代方法在 Java 中创建列表,即使用ArrayList和LinkedList。
以下示例展示了如何在 Java 中创建列表。这里我们使用 LinkedList 方法来创建数字列表。
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
public class HelloWorld {
public static void main (String[] args) throws java.lang.Exception {
List<String> listStrings = new LinkedList<String>();
listStrings.add("1");
listStrings.add("2");
listStrings.add("3");
listStrings.add("4");
listStrings.add("5");
System.out.println(listStrings);
}
}
它将产生以下输出 -
[1, 2, 3, 4, 5]
在 Erlang 中创建数字列表的程序
-module(helloworld).
-export([start/0]).
start() ->
Lst = [1,2,3,4,5],
io:fwrite("~w~n",[Lst]).
它将产生以下输出 -
[1 2 3 4 5]
Java 中的列表操作
在本节中,我们将讨论一些可以在 Java 中的列表上执行的操作。
向列表中添加元素
方法 add(Object)、add(index, Object)、addAll() 用于向列表中添加元素。例如,
ListStrings.add(3, “three”)
从列表中删除元素
方法 remove(index) 或 removeobject() 用于从列表中删除元素。例如,
ListStrings.remove(3,”three”)
注意 - 要删除列表中的所有元素,可以使用 clear() 方法。
从列表中检索元素
get() 方法用于从指定位置检索列表中的元素。getFirst() 和 getLast() 方法可以在 LinkedList 类中使用。例如,
String str = ListStrings.get(2)
更新列表中的元素
set(index,element) 方法用于使用指定元素更新指定索引处的元素。例如,
listStrings.set(2,”to”)
对列表中的元素进行排序
方法 collection.sort() 和 collection.reverse() 用于对列表进行升序或降序排序。例如,
Collection.sort(listStrings)
在列表中搜索元素
以下三种方法根据需要使用 -
Boolean contains(Object) 方法如果列表包含指定的元素则返回true,否则返回false。
int indexOf(Object) 方法返回列表中指定元素首次出现的位置的索引,如果找不到元素则返回 -1。
int lastIndexOf(Object) 返回列表中指定元素最后一次出现的位置的索引,如果找不到元素则返回 -1。
Erlang 中的列表操作
在本节中,我们将讨论一些可以在 Erlang 中的列表上执行的操作。
添加两个列表
append(listfirst, listsecond) 方法用于通过添加两个列表来创建一个新列表。例如,
append(list1,list2)
删除元素
delete(element, listname) 方法用于从列表中删除指定的元素,并返回新列表。例如,
delete(5,list1)
删除列表中的最后一个元素
droplast(listname) 方法用于从列表中删除最后一个元素并返回新列表。例如,
droplast(list1)
搜索元素
member(element, listname) 方法用于在列表中搜索元素,如果找到则返回 true,否则返回 false。例如,
member(5,list1)
获取最大值和最小值
max(listname) 和 min(listname) 方法用于查找列表中的最大值和最小值。例如,
max(list1)
对列表元素进行排序
方法 sort(listname) 和 reverse(listname) 用于对列表进行升序或降序排序。例如,
sort(list1)
添加列表元素
sum(listname) 方法用于将列表的所有元素相加并返回它们的总和。例如,
sum(list1)
使用 Java 对列表进行升序和降序排序
以下程序展示了如何使用 Java 对列表进行升序和降序排序 -
import java.util.*;
import java.lang.*;
import java.io.*;
public class SortList {
public static void main (String[] args) throws java.lang.Exception {
List<String> list1 = new ArrayList<String>();
list1.add("5");
list1.add("3");
list1.add("1");
list1.add("4");
list1.add("2");
System.out.println("list before sorting: " + list1);
Collections.sort(list1);
System.out.println("list in ascending order: " + list1);
Collections.reverse(list1);
System.out.println("list in dsending order: " + list1);
}
}
它将产生以下输出 -
list before sorting : [5, 3, 1, 4, 2] list in ascending order : [1, 2, 3, 4, 5] list in dsending order : [5, 4, 3, 2, 1]
使用 Erlang 对列表进行升序排序
以下程序展示了如何使用 Erlang(一种函数式编程语言)对列表进行升序和降序排序 -
-module(helloworld).
-import(lists,[sort/1]).
-export([start/0]).
start() ->
List1 = [5,3,4,2,1],
io:fwrite("~p~n",[sort(List1)]),
它将产生以下输出 -
[1,2,3,4,5]