函数式编程 - 列表

列表是函数式编程语言中最通用的数据类型,用于存储相似数据项的集合。 这个概念类似于面向对象编程中的数组。 列表项可以写在方括号中,并用逗号分隔。 将数据写入列表的方式因语言而异。

用 Java 创建数字列表的程序

List 不是 Java/C/C++ 中的数据类型,但我们有其他方法在 Java 中创建列表,即使用 ArrayListLinkedList

以下示例演示如何在 Java 中创建列表。 这里我们使用链接列表方法来创建数字列表。

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]