所以我正在阅读泛型方法,我感到困惑.我先说一下这个问题:
在这个例子中:假设我需要一个适用于任何类型T的selectionSort版本,通过使用调用者提供的外部可比较.
第一次尝试:
public static <T> void selectionSort(T[] arr, Comparator<T> myComparator){....}
Run Code Online (Sandbox Code Playgroud)
假设我有:
现在,我这样做:
selectionSort(arr, myComparator);
Run Code Online (Sandbox Code Playgroud)
并且它不起作用,因为myComparator不适用于Vehicle的任何子类.
然后,我这样做:
public static <T> void selectionSort(T[] arr, Comparator<? super T> myComparator){....}
Run Code Online (Sandbox Code Playgroud)
这个声明会起作用,但我不完全确定我一直在做什么......我知道使用是要走的路.如果"?super T"的意思是"一个未知的超类型T",那么我是强加上限还是上限?为什么超级?我的目的是让T的任何子类使用myComparator,为什么"?super T".如此困惑......如果您对此有任何见解我会很感激..
谢谢!
我知道这可能是一个老问题,许多人已经解决了这个问题; 但是,我的版本需要一点点扭曲.
所以我有一个文件,我称之为任务.对于这里的简单性,它只有4个条目:
约翰
克里斯蒂娜
克里斯汀
汤姆
现在,我想使用awk获取此文件中最长的名称,我希望它能同时返回Christina和Christine.
这是我到目前为止:
<quest awk '{ if(length>x) {x =length; y=$0} } END {print y}'
Run Code Online (Sandbox Code Playgroud)
它将回归克里斯蒂娜.我认为只用一行就可以完成,但我遇到了一些麻烦,想出一个聪明的方法来做到这一点.如果你能提供帮助我感激不尽!当然,我更喜欢单行.
我是python的新手,我需要这样做:
lines = ['apple','bear']
signed=['aelpp','aber']
Run Code Online (Sandbox Code Playgroud)
我希望输出为:
res = ['aelpp apple', 'aber bear']
Run Code Online (Sandbox Code Playgroud)
如果你能提供帮助,我将不胜感激!我试过简单地使用+和join()函数,但没有得到我想要的东西.
我有一个关于使用XOR两个交换两个字符串文字的快速问题.
所以我有以下内容:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void intSwap(int *a, int *b){
*a=*a^*b;
*b=*a^*b;
*a=*a^*b;
}
void swapString(char **a, char **b){
char *temp=*a;
*a=*b;
*b=temp;
}
void main(){
char *s= "ha";
char *t= "Oh";
printf("%s and %s \n",s,t); // prints ha Oh
swapString(&s,&t);
printf("%s and %s \n",s,t); // prints Oh ha
int a=10;
int b=5;
printf("%d %d\n",a,b); //print 10 5
intSwap(&a,&b);
printf("%d %d\n",a,b); //print 5 10
}
Run Code Online (Sandbox Code Playgroud)
如您所见,我使用二进制运算XOR来表示intSwap.但是,当我尝试使用swapString做同样的事情时,它不起作用.
我收到错误消息说:二进制操作数无效^(有'char*'和'char*')
你知道如何使用XOR交换两个字符串文字吗?在C中有可能吗?谢谢!