我正在努力学习泛型类和实现.
我正在尝试创建一个扩展ArrayList的泛型类(我知道这是不好的做法,这只是我必须要做的事情).我想使用类似的方法对arrayList中的条目进行排序(我不允许使用.sort().这是扩展类:
import java.util.ArrayList;
import java.util.*;
/**
* extending to ArrayList
*/
public class SortedArrayList<E> extends ArrayList<E>
{
/**
* Constructing the super
*/
public SortedArrayList()
{
super();
}
public void insertAndSort (E element){
if (isEmpty()){
add(element);
}
for ( int i = 0; i < size(); i++){
E otherElement = get(i);
if(element.compareTo(otherElement) > 0){
add(i, element);
}
if(element.compareTo(otherElement) < 0) {
add(i+1, element);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想实现的类进行排序对象的compareTo方法,但是当我尝试编译SortedArrayList类它返回一个错误说"无法识别的符号 - 方法的compareTo(E)".我知道那是因为"元素"实际上不是一个要调用的对象,它意味着是通用的.有没有办法告诉编译器compareTo()方法是从一个现在不存在的对象调用的,但是它会被调用吗?
我想知道,因为我无法在网上找到的任何信息,是怎么样的一种算法O(n * m^2)或O(n * k)或O(n + k)应该进行分析?
只n算数?
其他条款是多余的?
所以,O(n * m^2)实际上是O(n)?
如何扫描数组的值?喜欢:
Input: 3 4 5 6 7
What I want:- ar[5] = {3, 4, 5, 6, 7};
Run Code Online (Sandbox Code Playgroud)
这听起来很容易,但我被困在那里.有人可以帮忙吗?
在c程序中,我们可以初始化一个数组int array[10].所以它可以存储10个整数值.但是当我使用循环给出输入时,它输入超过10并且不显示任何错误.实际上发生了什么?
#include<stdio.H>
main()
{
int array[10],i;
for(i=0;i<=11;i++)
scanf("%d",&array[i]);
for(i=0;i<10;i++)
printf("%d",array[i]);
}
Run Code Online (Sandbox Code Playgroud) 我试图在Unix上使用该字典文件,但每次我使用命令:cat/usr/share/dict/words> words.txt
我收到消息"设备上没有剩余空间".有没有其他人得到这个消息并想出一个解决方案?我四处搜寻,没找到任何东西.
我在学校服务器上工作,我键入df -H,发现我甚至没有接近使用我的可用空间,所以必须有其他事情发生.
输出df命令--->
nfs.cs.fsu.edu:/home/misc/guest 11G 3.6G 6.3G 37% /home/guest
nfs.cs.fsu.edu:/home/majors 146G 139G 0 100% /home/majors
/dev/sda2 40631988 1703356 36831348 5% /
/dev/mapper/vg0-lv01 203147960 22470992 170191208 12%
/scratch4 /dev/sda7 4061540 74260 3777636 2% /tmp
/dev/mapper/vg0-lv00 314879212 251729436 46898256 85% /backup
/dev/sda6 10153988 839452 8790420 9% /var
/dev/sda5 20315812 10550172 8717000 55% /usr
/dev/sda1 101086 37382 58485 39% /boot tmpfs 4088804 0 4088804 0% /dev/shm
nfs.cs.fsu.edu:/home/faculty 442383104 391954976 27655936 94% /home/faculty
nfs.cs.fsu.edu:/home/grads 121892608 84729120 30892608 74% /home/grads …Run Code Online (Sandbox Code Playgroud) 我有这么简单的代码,但我不知道为什么我不能让它工作.
tagName="Hello";
String value="Hello";
if (tagName!=null && tagName.equals(value))
{
int io=0;
}
Run Code Online (Sandbox Code Playgroud)
tagName不是null并且明显等于value但代码永远不会出现这种情况int io=0;
考虑这个二叉搜索树的例子。
n =10 ;and if base = 2 then
Run Code Online (Sandbox Code Playgroud)
log n = log 2 (10) = 3.321928。
我假设这意味着搜索一个元素最多需要 3.321 步(访问)。我还假设 BST 是平衡二叉树。
现在要访问值为 25 的节点。我必须转到以下节点:
50
40
30
25
Run Code Online (Sandbox Code Playgroud)
所以我必须访问4个节点。3.321 几乎等于 4。
这种理解是对还是错?
algorithm tree binary-tree binary-search-tree data-structures
我有以下代码来查找我正在使用的Linux发行版的发行版.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
return print_osinfo();
}
int print_osinfo()
{
FILE *fp;
extern FILE* popen();
char buffer[128];
int index = 0;
memset(buffer,0,sizeof(buffer));
fp = popen("/etc/centos-release", "r");
if(!fp)
{
pclose(fp);
fp = popen("/etc/redhat-release", "r");
if(!fp)
{
pclose(fp);
return 1;
}
}
while(fgets(buffer, sizeof(buffer), fp)!= NULL)
{
printf("%s\n",buffer);
}
pclose(fp);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如果我在Ubuntu 14.04上运行上面的代码,我会收到以下错误.
sh: 1: /etc/centos-release: not found
Run Code Online (Sandbox Code Playgroud)
我不明白为什么它不试图打开redhat-release然后返回-1.另外,有没有办法防止上面的错误显示在屏幕上?
在 Java 中,您可以使用Socket和ServerSocket获取用于两个进程之间通信的双向通道。但是只有其中一个必须具有 ServerSocket 并被视为“服务器”,而另一个被视为“客户端”,即必须首先可用的服务器。那么,有没有办法让两个对等点使用相同的代码?我的意思是,在客户端-服务器应用程序中,服务器必须等待客户端:
ServerSocket serverSocket = new ServerSocket(port);
Socket client = serverSocket.accept();
Run Code Online (Sandbox Code Playgroud)
而客户端必须连接到服务器:
Socket socket = new Socket(host, port);
Run Code Online (Sandbox Code Playgroud)
如果没有活动服务器,客户端代码就会失败。
我的问题是是否有办法让两个对等点都使用客户端代码来等待另一个主机出现,这样哪个对等点先到达并不重要。
public TargetDataLine targetDataLine;
private static AudioFormat getAudioFormat()
{
return new AudioFormat(16000, 16, 2, true, false);
}
AudioFormat a = getAudioFormat();
DataLine.Info info = new DataLine.Info(TargetDataLine.class, a);
targetDataLine = (TargetDataLine) AudioSystem.getLine(info);
targetDataLine.open(a);
targetDataLine.start();
AudioInputStream ais = new AudioInputStream(targetDataLine);
AudioSystem.write(ais, AudioFileFormat.Type.WAVE, new File("record.wav"));
Run Code Online (Sandbox Code Playgroud)
我试图在Oracle上执行下面的代码; 打算打印布尔值.这不是在复杂.任何帮助?
DECLARE
v_bool BOOLEAN;
BEGIN
IF (v_bool IS NULL) THEN
DBMS_OUTPUT.PUT_LINE('By default the value is NULL');
ELSEIF (v_bool = TRUE) THEN
DBMS_OUTPUT.PUT_LINE('By default the value is TRUE');
ELSE
DBMS_OUTPUT.PUT_LINE('By default the value is FALSE');
END IF;
END;
Run Code Online (Sandbox Code Playgroud) 我有这个字符串10-12-1999,我想将值存储到不同的变量,如下所示:
所以我有这个字符串data= 10-12-1999,我想像这样存储它
int day =10;
int month = 12;
int year = 1999;
Run Code Online (Sandbox Code Playgroud)
有人能指出我正确的方向吗?