我需要在字符串上找到重复的单词,然后计算它们被重复的次数.所以基本上,如果输入字符串是这样的:
String s = "House, House, House, Dog, Dog, Dog, Dog";
Run Code Online (Sandbox Code Playgroud)
我需要创建一个没有重复的新字符串列表,并在其他地方保存每个单词的重复次数,如下所示:
新字符串:"House,Dog"
新的Int数组:[3,4]
有没有办法用Java轻松完成这项工作?我已经设法使用s.split()分隔字符串但是我如何计算重复并在新字符串上消除它们?谢谢!
比方说,有ñ条目,每个人可以利用的价值的金额0或1.这意味着这些条目有2 ^ n种可能的组合.条目数可以从1到6不等.
如何创建每个可能的组合作为一系列数字(即 n = 2:00,01,10,11),而不是诉诸于一千个IF?
根据Microsoft 文档,在List上调用Clear()是O(n)操作.我猜这是因为如果列表要保存引用,则需要将它们置空.我想知道如果列表具有值类型,Clear()是否仍然是O(n)操作,因为容量没有改变.重置索引指针和计数不应该足够吗?
我问这个是因为在当前的应用程序中,我们使用的列表在很短的时间内就被清除了数十万次,并想知道是否有不同的实现可以使它更快.
在C#中使用Linq,如何查询Object[](data)以便它返回List<int>数组中的所有对象并将它们展平为单个List<int>?
这是我试过的,但由于某种原因它不起作用:
List<int> IntData;
IntData = data.Where(n => n.GetType().IsGenericType)
.Where(n => n.GetType().GetGenericTypeDefinition() == typeof(List<int>))
.Select(n => (List<int>) n)
.SelectMany( n => n));
Run Code Online (Sandbox Code Playgroud) 在使用Linq的C#中,是否可以根据Value的类型提取Dictionary的条目的子集,并将其转换为具有该类型值的Dictionary?
基本上,如果你有一个像这样的词典:
Dictionary<string, Object> Data;
Run Code Online (Sandbox Code Playgroud)
你可以做一些像:
Dictionary<string, int> IntData = Data.Query();
Run Code Online (Sandbox Code Playgroud)
这样新的Dictionary就会获得其值为Type int的所有entires.这可能吗?
我有一个带有通用List属性的对象,其中T是原始值,字符串或枚举。此列表的泛型参数永远不会是引用类型(字符串除外)。现在,我有另一个参数类型为object的List。有没有一种方法可以在我的对象列表中设置该属性的值?如:
List<object> myObjectList = new List<object>();
myObjectList.Add(5);
property.SetValue(myObject, myObjectList, null);
Run Code Online (Sandbox Code Playgroud)
当我知道该属性的真实类型是:
List<int>
Run Code Online (Sandbox Code Playgroud)
我能看到的唯一解决方案是进行硬编码开关,该开关使用list属性的通用参数的类型并创建类型安全的列表。但是,最好有一个通用的解决方案。谢谢!
在程序(Java)中,我需要检查并行端口中的特定引脚.每当该引脚从逻辑0变为1(正边沿时钟)时,我必须读取端口上的数据并保存它.这种情况大约每10毫秒发生一次,但可能会有所不同.
为了做到这一点,我用一个不断检查端口的while循环创建了一个单独的线程,但这使得处理器变得疯狂,我知道这是因为while循环.我的问题是,如何在不使用处理器密集的while循环的情况下不断扫描端口?该程序并不准确知道何时发生引脚更改,只是它发生在每10ms左右.
我一直试图创建的效果是,只要鼠标进入JPanel上的某个区域,鼠标光标图标就会改变,并且只要它离开区域就会切换到默认值.我在MouseMotionListener类中使用MouseMoved功能,只要鼠标在JPanel上移动,就会验证坐标是否对应于特殊区域.
然而,这种方法对计算机处理器的压力非常大,所以我想问一下是否有更有效的方法.任何帮助表示赞赏.
该程序的作用是在JPanel上绘制图形,当选择"连接"按钮时,如果用户单击一个图形,然后在另一个图形上,则它将这些图形与一条线连接起来.
这些图形在JPanel上绘制,并且存储了各自的区域边界,因此当鼠标移动时,它会检查当前的X和Y坐标是否位于其中一个区域内,如果是,则更改光标.checkValidConnectionRegion检查当前X和Y变量是否在图的区域内.这是处理程序的代码:
public void mouseMoved(MouseEvent e)
{
if(GUI.Connectionbutton.isSelected())
{
x = e.getX();
y = e.getY();
checkValidConnectionRegion();
if(validConnectionRegion)
setCursor(Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR));
if(!validConnectionRegion)
setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
}
}
Run Code Online (Sandbox Code Playgroud) 我对我正在制作的程序有疑问,说实话,我找不到解决办法.看来Java ArrayList集合中包含的对象正在被修改,而我没有编程这样的修改.
该程序作为一个整体意味着通过在路径上移动,基本上在10x10网格上的两个节点之间创建随机连接.此路径表示为网格中的ArrayList点集合,第一个索引包含第一个节点的位置(节点A),最后一个索引包含第二个节点的位置(节点B).我这样做是通过将自己定位在A的位置,然后随机移动到网格中的连续点,在while循环中重复这一点,直到达到B的位置.
一切似乎都有效,除了"路径"集合以某种方式被改变,这样它的每个点最终都与我移动的最后一个点相同,这也是B的位置.
方法如下:
public void generateRandomPath()
{
path = new ArrayList<Point>();
path.add(pInitial);
complete = false;
while(!complete)
{
k = path.get(path.size()-1);
d = selectDirection(k);
GUI.log.append("==== Before the method. ==== \n");
GUI.log.append(Integer.toString(path.get(path.size()-1).getX())+" - "+Integer.toString(path.get(path.size()-1).getY())+"\n");
x = move(k, d);
path.add(x);
if(k.getX() == pEnd.getX() && k.getY() == pEnd.getY())
complete = true;
}
GUI.log.append("Finished. \n");
}
Run Code Online (Sandbox Code Playgroud)
所以它基本上做的是它抓住路径中的最后一个点作为参考,选择一个方向,然后移动到该方向上连续的点.while循环的每次重复都应该为路径添加一个新点.然而,最终发生的事情是,不仅添加了这个新点,而且已经在路径中的每个其他点都会添加最后一个点的值.通过利用上面显示的日志条目(GUI.log.append),我设法在步骤中看到该 …
c# ×4
java ×4
arrays ×2
linq ×2
algorithm ×1
arraylist ×1
boolean ×1
casting ×1
collections ×1
combinations ×1
dictionary ×1
generics ×1
list ×1
loops ×1
mouse ×1
move ×1
object ×1
onmousemove ×1
parsing ×1
performance ×1
reflection ×1
repeat ×1
string ×1
types ×1