在Java中,我有一个可能有100,000个元素的SortedSet.我想高效优雅地获得最后25个元素.我有点不解.
为了获得前 25个,我会迭代并在25个元素后停止.但我不知道如何以相反的顺序迭代.有任何想法吗?
SortedSet<Integer> summaries = getSortedSet();
// what goes here :-(
Run Code Online (Sandbox Code Playgroud) 我有一些字符串,每个字符串大约10K字符.它们有很多重复.它们是序列化的JSON对象.我想轻松地将它们压缩成一个字节数组,并从字节数组中解压缩它们.
我怎样才能最轻松地做到这一点?我正在寻找方法,所以我可以做以下事情:
String original = "....long string here with 10K characters...";
byte[] compressed = StringCompressor.compress(original);
String decompressed = StringCompressor.decompress(compressed);
assert(original.equals(decompressed);
Run Code Online (Sandbox Code Playgroud) 我需要找到一种在java中并行执行任务(依赖和独立)的方法.
我检查了java.util.concurrent Future和Fork/Join,但看起来我们无法向Task添加依赖项.
任何人都可以指出我更正Java API.
我使用CGWindowListCopyWindowInfo来获取所有窗口的列表.它根据原点是屏幕的左上角给出了每个窗口的坐标.
如果我使用NSWindow的SETFRAME方法,对基于原点作为该坐标左下角的画面.
什么是从一个转换为另一个的干净,可靠的方式?
补充:干净可靠,我的意思是,无论用户有多个屏幕还是正在使用Spaces,都能确保工作正常.我认为必须有一个使用库API的已知习语.
我在Swing JToolBar上创建了一个下拉菜单.但它并没有按照我想要的方式创造行为.我的目标是像Firefox的"智能书签"按钮一样工作.
当用户选择菜单项时,它会消失:正确!
当用户按下ESC时,它会消失:CORRECT!
当用户点击菜单外的主框架中的某处时,它会消失:正确!
但是当用户第二次点击显示下拉菜单的按钮时,它不会消失:INCORRECT ... :-(
我的问题是如何添加这种行为,当点击第二次显示菜单的按钮时,它确实消失了.
这是我目前的代码,来自Mac上的Java 6:
import javax.swing.*;
import javax.swing.event.PopupMenuEvent;
import javax.swing.event.PopupMenuListener;
import java.awt.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
public class ScratchSpace {
public static void main(String[] arguments) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame frame = new JFrame("Toolbar with Popup Menu demo");
final JToolBar toolBar = new JToolBar();
toolBar.add(createMoreButton());
final JPanel panel = new JPanel(new BorderLayout());
panel.add(toolBar, BorderLayout.NORTH);
panel.setPreferredSize(new Dimension(600, 400));
frame.getContentPane().add(panel);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
private static AbstractButton createMoreButton() { …Run Code Online (Sandbox Code Playgroud) 我记得有一个Cocoa框架或AppleScript字典来检查计算机上的任何地方是否安装了具有特定名称的Application包.
我该怎么做呢?Cocoa,AppleScript或命令行对我都很有用.
我目前这样做:
Set<Integer> integers = ... // sourced from elsewhere in code
IntStream intStream = integers.stream().mapToInt(value -> value);
Run Code Online (Sandbox Code Playgroud)
将值映射到值,将转换为Stream<Integer>to 似乎是多余的IntStream.有没有办法在没有冗余mapToInt(...)部分的情况下做到这一点?
在Java中:
Map<String, Object> model = new HashMap<>();
Map<String, String> items = new HashMap<>();
items.put("color", "red");
model.put("items", items);
Run Code Online (Sandbox Code Playgroud)
我现在想要在items包含密钥的渲染模板中包含一个片段color.
<#if ???? >
the map contains a key called color
</#if>
Run Code Online (Sandbox Code Playgroud)
我该怎么替换???? 用?
我有这行代码将NSString转换为NSData:
NSData *data = [NSData dataWithBytes:[message UTF8String] length:[message lengthOfBytesUsingEncoding:NSUTF8StringEncoding]];
Run Code Online (Sandbox Code Playgroud)
如何在Unicode而不是UTF8中执行此操作?我的消息可能包含西里尔字符或变音符号.
在我想要添加到我的项目的库中,有一个名为NSString-Base64Extensions.h(带有NSString-Base64Extensions.m)的文件和一个名为NSString + PECrypt.h(带有NSString + PECrypt.m)的文件.
这意味着什么?
java ×5
cocoa ×4
objective-c ×2
applescript ×1
compression ×1
freemarker ×1
java-8 ×1
java-stream ×1
jtoolbar ×1
macos ×1
menu ×1
nsdata ×1
nsstring ×1
nswindow ×1
sortedset ×1
string ×1
swing ×1
unicode ×1