小编Rad*_*def的帖子

在Java 8中迭代流的最快方法是什么?

如果我有一个集合,我想迭代一个过滤流,那么我可以做以下任何一个(以及更多的钝选项):

for(item in collection.stream().filter(...).collect(Collectors.toList()))
for(item in collection.stream().filter(...).collect(Collectors.toSet()))
Run Code Online (Sandbox Code Playgroud)

哪个更快?一个列表还是一组?有没有办法收集简单的Iterable或其他类型我可以迭代?

java java-8 java-stream

4
推荐指数
1
解决办法
849
查看次数

Swing:GlassPane可防止鼠标指针发生变化

我有一个带有一些标签的JTabbedPane,标签旁边还有很多未使用的额外空间.所以我正在尝试使用它并在那里放置一些按钮(就像在Eclipse中一样).我把按钮放在GlassPane上:

        JPanel glasspane = getPanelWithButtons();
        // panel with FlowLayout.RIGHT
        frame.setGlassPane(glasspane);
        glasspane.setOpaque(false);
        glasspane.setVisible(true);
Run Code Online (Sandbox Code Playgroud)

这是有效的,我仍然可以点击我的gui的其他元素(我发现的大多数搜索结果都是关于如何防止这种情况).到目前为止唯一的问题是当鼠标指针悬停在JSplitPane的条形图上时,鼠标指针不会更改为该双端水平箭头.我怎样才能恢复这种行为?

编辑

我发现没有显示玻璃窗格下任何组件的鼠标更改事件.这些组件会将鼠标光标更改为手形光标,变焦镜头等.这些鼠标指针更改都不会产生任何影响.我想这是因为在玻璃窗格中,需要对玻璃窗格进行鼠标指针更改,但我不想手动更改所有鼠标指针.

java mouse swing pointers glasspane

3
推荐指数
1
解决办法
851
查看次数

如何使用泛型方法将List <T>转换为Array t [](对于基本类型)?

我正在使用泛型方法进行一些测试,我想在下面转换这两个方法(convertFloatListToArray和convertShortListToArray)(convertListToArray):

public class Helper{
    public static float[] convertFloatListToArray(List<Float> list){
        float[] array = new float[list.size()];

        for(int i = 0; i<list.size(); i++){
            array[i] = list.get(i);
        }

        return array;
    }

    public static short[] convertShortListToArray(List<Short> list){
        short[] array = new short[list.size()];

        for(int i = 0; i<list.size(); i++){
            array[i] = list.get(i);
        }

        return array;
    }
}
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用泛型时,如下所示,我有一些错误:

public class Helper{
    public static <T, E> T convertListToArray(List<E> list){
        T array = new T[list.size()];

        for(int i = 0; i<list.size(); i++){
            array[i] = list.get(i);
        }

        return array;
    } …
Run Code Online (Sandbox Code Playgroud)

java arrays generics collections generic-method

3
推荐指数
1
解决办法
1813
查看次数

getClass返回什么类型?

这是我的代码:

Set<Class<Event>> s = new HashSet<>();             
Set<Class<? extends Event>> s2 = new HashSet<>();
Event e = new Event();                         

s.add(e.getClass());   // #1
s2.add(e.getClass());  // #2

class Event {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

为什么编译器会在语句中引发错误#1

我正在使用Java 7.

java generics

3
推荐指数
1
解决办法
475
查看次数

将具有泛型参数的类传递给注释

我想知道为什么Java编译器不接受这个赋值:

Class<? extends List<?>> blbost = ArrayList.class;
Run Code Online (Sandbox Code Playgroud)

请注意,我对解决方案不感兴趣Class<? extends List<?>> blobst = (Class<? extends List<?>>)ArrayList.class;,我想知道它可以使用的原因是什么.


最初的动机是在注释中使用泛型:

@SomeAnnotation(SomeFunction.class) // Syntax error here!
private static class SomeClass  {
}

private @interface SomeAnnotation {
    Class<? extends Function<?, ?>> value();
}
private static class SomeFunction<T> implements Function<T, String> {
    @Override
    public String apply(T t) {
        return t.toString();
    }
}
Run Code Online (Sandbox Code Playgroud)

我不能在注释中使用强制转换,因为值必须是常量.

为什么我不能SomeFunction作为一个参数传递,SomeAnnotation我该怎么做呢?

java generics types

3
推荐指数
1
解决办法
1202
查看次数

JavaFX - 不能在 MenuItem 中使用下划线

当我遇到一个非常奇怪的问题时,我正在使用 JavaFX 创建一个程序。我想用包含下划线 (_) 的文本创建一个 MenuItem,但是当显示该文本时,下划线消失了。这是一个示例代码:

public class JavaFXTest extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception {

        BorderPane mainPane = new BorderPane();

        MenuBar menuBar = new MenuBar();
        Menu menu = new Menu("Menu");
        menuBar.getMenus().add(menu);

        MenuItem item = new MenuItem("Test_underscore");
        menu.getItems().add(item);

        mainPane.setTop(menuBar);

        primaryStage.setScene(new Scene(mainPane, 890, 570));
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}
Run Code Online (Sandbox Code Playgroud)

它不显示“Test_underscore”,而是显示:

在此处输入图片说明

有谁知道这里会发生什么?

java javafx menuitem

3
推荐指数
1
解决办法
313
查看次数

Collection.sort /反向/ reverOrder

我有一个歌曲的Arraylist存储标题,艺术家和时间我写了我的所有代码和一切.我只是想了解更多关于Collection.sort和Collection.reverse以及Collection.reverseOrder的信息.我有一个包含所有歌曲和所有内容的文件.我想根据时间按降序排序歌曲.

当我尝试这个时,我得到一个错误或它没有正确排序.任何人都可以建议我如何使用Collection.sort并使用比较器

Comparator<Song> comparator = Collections.reverseOrder();
Collections.reverse(listOfSongs);
Run Code Online (Sandbox Code Playgroud)

我的比较方法如下:

public int compare(Song mySong1,Song mySong2 ){
        if (mySong1.getLength() > mySong2.getLength()){
            return -1; 
        }
        if(mySong1.getLength() < mySong2.getLength()){
            return 1;
        }
        if(mySong1.getLength() == mySong2.getLength())
        {
            if(mySong1.getTitle().compareTo(mySong2.getTitle()) > 0){
                return -1;
            }
            if(mySong1.getTitle().compareTo(mySong2.getTitle())  < 0 ){
                return 1;
            }
            else {
                if(mySong1.getComposer().compareTo(mySong2.getComposer())  >0){
                    return -1;
                }
                if(mySong1.getComposer().compareTo(mySong2.getComposer())  <0) {
                    return 1;
                }
            }
        }
        return 0; 
    }
Run Code Online (Sandbox Code Playgroud)

java sorting algorithm collections

2
推荐指数
1
解决办法
2万
查看次数

当我们在String上调用它时,toString是否会创建一个新对象?

我和我的朋友正在讨论String,并且知道调用toString()String会创建新对象吗?但即便是我的朋友也不知道原因.谁可以给我解释一下这个?

java string

2
推荐指数
1
解决办法
353
查看次数

这些初始化HashMap的方法有什么区别?

我为我的程序使用了HashMap,它工作正常,但我不明白HashMap的这些初始化之间的区别.

假设我正在实现一个HashMap,其中一个字符作为键,一个整数作为值.这些有什么区别?

HashMap<Character, Integer> alphabet1 = new HashMap();
HashMap<Character, Integer> alphabet1 = new HashMap<Character, Integer>();
HashMap alphabet1 = new HashMap<Character, Integer>();
Map alphabet1 = new HashMap<Character, Integer>();
HashMap alphabet1 = new HashMap<Character, Integer>();
HashMap alphabet1 = new HashMap();
Map alphabet1 = new HashMap();
Run Code Online (Sandbox Code Playgroud)

java generics hashmap

2
推荐指数
1
解决办法
756
查看次数

Guava JavaDocs基于不同的"等价关系"集合意味着什么?

番石榴的JavaDocSets.SetView.union()(以及intersection(),difference()symmetricDifference())提及"对等关系":

结果是不确定的,如果set1set2是基于不同的等价关系集(如HashSet,TreeSetMap.keySet()一个的IdentityHashMap都是).

我很难理解那句话的意思.

术语表将"等价关系"定义反身(" a.relation(a)总是true"),对称(a1.relation(a2) == a2.relation(a1))和传递(a1.relation(a2) && a2.relation(a3)暗示a1.relation(a3)) - 并且指Object.equals()'docs'.(不幸的是,番石榴维基没有详细说明......

但是Set在这方面不同类型的不同(即等价关系)如何?他们似乎都继承equals()AbstractSet?它与集合所持有的对象类型(例如Set<Cow>vs. Set<Chicken>)无关,是吗?

java collections set equivalence guava

2
推荐指数
1
解决办法
155
查看次数