【问题标题】:Is it possible to use java code in a python program?是否可以在 python 程序中使用 java 代码?
【发布时间】:2017-10-22 20:05:03
【问题描述】:

所以我很好奇是否可以在 python 程序中使用 java 函数?

假设我有一个包含未排序列表的 python 脚本

例如:

//main.py

pylist = ['4', '2', '5', '1', '3']

#call java selection sort here

#then print sorted list
for x in pylist:
    print(x)

我想使用 java 类中的算法对 python 脚本中的列表进行排序。这可能吗? 是不是像把java包导入python脚本,然后使用类似“selectionsort(pylist)”这样的语句那么简单?

选择排序来自这里:

//sort.java

import java.util.Arrays;

public class sortexample
{
    public static void main(String[] args)
    {
        int[] ar =  {4, 2, 5, 1, 3};
        printarray(ar);
        System.out.printf("%n");
        Arrays.sort(ar);
        printarray(ar);
    }

    public static void printarray(int[] array)
    {
        for(int a: array)
        {
            System.out.println(a);
        }
    }


    public static int[] selectionsort(int[] arr)
    {
        for(int i = 0; i < arr.length - 1; i++)
        {
            int index = i;
            for(int j = i + 1; j < arr.length; j++)
                if(arr[j] < arr[index])
                { 
                    index = j;
                }

            int smallerNumber = arr[index];  
            arr[index] = arr[i];
            arr[i] = smallerNumber;
        }
        return arr;
    }
}

【问题讨论】:

  • 标准的sortsorted() 方法是非常优美的基于C 的Timsort 实现。因此,除了您确实需要实现自己的排序的情况之外,您应该使用它们。
  • 当然! 如果你使用jython.
  • 我认为这行不通。 Jython:用于 Java 平台的 Python
  • @ElliottFrisch 那是 Java 中的 Python,而不是 Python 中的 Java,对吧?

标签: java python import python-import


【解决方案1】:

没有。但是您可以尝试将 Java 代码重写为 Python 代码并改用它。这是因为 Java 在 JVM(Java 虚拟机)上运行并且需要编译才能运行,而 Python 是一种不需要任何编译的脚本语言。在我熟悉的任何环境中,这两种语言都不兼容。

Python 解释器需要 Python,但无法理解 Java 语法。

有些语言可以在一些非常特殊的情况下一起使用。例如,如果我写成 JSNI,我可以在 GWT 框架中用 Java 写 JavaScript。

【讨论】:

    【解决方案2】:

    您可以尝试Jython,它与 CPython 2.7 兼容并允许您访问 java 类。

    查看here 以获取使用示例,但我想象您需要类似以下内容:

    >>> from sort import sortexample
    >>> sample = [2,7,6,5,4,3,1]
    >>> sortexample.selectionsort(sample)
    

    这可能无法很好地转换为 java 类型。

    或者你可以在 python 中implement selection sort

    【讨论】:

      【解决方案3】:

      更多完整性:当然,您可以在 python 脚本中使用 java 代码。

      您只需编译 Java 代码,然后进行子进程调用以触发 JVM 运行。

      但最接近合理解决方案的是 jython。尽管这意味着您在技术上运行启用了 python 的 JVM。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-20
        • 2021-07-07
        • 1970-01-01
        • 1970-01-01
        • 2012-03-14
        • 2020-05-03
        相关资源
        最近更新 更多